Как на СИ проверить существование процесса, зная его PID? Всякие `ps ax | grep PID` не интересуют. Может быть есть альтернативные пути, наподобии того, как это делает ps?
>Как на СИ проверить существование процесса, зная его PID? Всякие `ps ax
>| grep PID` не интересуют. Может быть есть альтернативные пути, наподобии
>того, как это делает ps?
Ну в Linux,например, можно /proc просканировать на наличие директории PID, только мне кажется ps-om надежнее.
>Ну в Linux,например, можно /proc просканировать на наличие директории PID, только мне
>кажется ps-om надежнее.Посмотрел там. Да, на самом деле можно и так (хотя у меня стоит и FreeBSD) ;-). Но интересует - какими средствами это делает ps? А то я глянул исходник и нифига не понял. Т.е. какими-то стандартными функциями, какими?
У меня солярка, там есть
man Intro
, где коротко описаны названия( имена и что делает) системных вызовов. Где-то там я на что-то налетал, было дело, но за ненадобностью не помню.
>Как на СИ проверить существование процесса, зная его PID? Всякие `ps ax
>| grep PID` не интересуют. Может быть есть альтернативные пути, наподобии
>того, как это делает ps?
Допрос ps под Linux (ну нет BSD под рукой) с помощью strace показал, что он все делает через /proc. Вообще чем не нравится /proc?
>Как на СИ проверить существование процесса, зная его PID? Всякие `ps ax
>| grep PID` не интересуют. Может быть есть альтернативные пути, наподобии
>того, как это делает ps?если kill (pid, 0) возвращает 0 , то процесс существует. Иначе смотри какую ошибку kill пишет в errno (man 2 kill).
Если процессу посылается сигнал 0, то на самом деле ничего не происходит, а просто проверяется, существует ли процесс с таким pid-ом.
man waitpid