URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 808
[ Назад ]

Исходное сообщение
"Проверить существование процесса, зная его PID."

Отправлено Alexander , 26-Июн-02 13:20 
Как на СИ проверить существование процесса, зная его PID? Всякие `ps ax | grep PID` не интересуют. Может быть есть альтернативные пути, наподобии того, как это делает ps?

Содержание

Сообщения в этом обсуждении
"RE: Проверить существование процесса, зная его PID."
Отправлено Soldier , 26-Июн-02 15:02 
>Как на СИ проверить существование процесса, зная его PID? Всякие `ps ax
>| grep PID` не интересуют. Может быть есть альтернативные пути, наподобии
>того, как это делает ps?
Ну в Linux,например, можно /proc просканировать на наличие директории PID, только мне кажется  ps-om  надежнее.



"RE: Проверить существование процесса, зная его PID."
Отправлено Alexander , 26-Июн-02 15:16 
>Ну в Linux,например, можно /proc просканировать на наличие директории PID, только мне
>кажется  ps-om  надежнее.

Посмотрел там. Да, на самом деле можно и так (хотя у меня стоит и FreeBSD) ;-). Но интересует - какими средствами это делает ps? А то я глянул исходник и нифига не понял. Т.е. какими-то стандартными функциями, какими?


"RE: Проверить существование процесса, зная его PID."
Отправлено Арлекин , 26-Июн-02 17:41 
У меня солярка, там есть
man Intro
, где коротко описаны названия( имена и что делает) системных вызовов. Где-то там я на что-то налетал, было дело, но за ненадобностью не помню.

"RE: Проверить существование процесса, зная его PID."
Отправлено pth , 26-Июн-02 23:47 
>Как на СИ проверить существование процесса, зная его PID? Всякие `ps ax
>| grep PID` не интересуют. Может быть есть альтернативные пути, наподобии
>того, как это делает ps?
Допрос ps под Linux (ну нет BSD под рукой) с помощью strace показал, что он все делает через /proc. Вообще чем не нравится /proc?


"RE: Проверить существование процесса, зная его PID."
Отправлено romanSA , 27-Июн-02 09:28 
>Как на СИ проверить существование процесса, зная его PID? Всякие `ps ax
>| grep PID` не интересуют. Может быть есть альтернативные пути, наподобии
>того, как это делает ps?

если kill (pid, 0) возвращает 0 , то процесс существует. Иначе смотри какую ошибку kill пишет в errno (man 2 kill).

Если процессу посылается сигнал 0, то на самом деле ничего не происходит, а просто проверяется, существует ли процесс с таким pid-ом.


"RE: Проверить существование процесса, зная его PID."
Отправлено Max V. Zinal , 28-Июн-02 18:12 
man waitpid