Какие способы проверить процесс с конкретным pid существует и активен? - PullRequest
0 голосов
/ 20 октября 2019

Какими способами можно проверить процесс с конкретным pid, существует и активен (не зомби)? Я использую Ubuntu Linux с gcc.

1 Ответ

3 голосов
/ 20 октября 2019

Вы должны понимать, что к тому времени, когда вы решите что-то с этим процессом, он может уже давно исчезнуть (google TOCTOU ).

В любом случае, POSIX может вызвать kill (0, pid) и проверить errno. ESRCH будет означать «такого процесса нет», а EPERM означает «процесс существует, но вы не можете сигнализировать о нем».

Специфическим для Linux способом будет чтение каталога /proc. Записи там соответствуют PID (есть также некоторые записи, которые не являются числовыми, их можно игнорировать). Не все системы Linux используют /proc.

Если вы используете SELINUX, могут быть процессы, о которых вам даже не разрешено знать, но, поскольку вы не можете ничего с этим поделать, даже не беспокойтесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...