Вы должны понимать, что к тому времени, когда вы решите что-то с этим процессом, он может уже давно исчезнуть (google TOCTOU ).
В любом случае, POSIX может вызвать kill (0, pid)
и проверить errno
. ESRCH
будет означать «такого процесса нет», а EPERM
означает «процесс существует, но вы не можете сигнализировать о нем».
Специфическим для Linux способом будет чтение каталога /proc
. Записи там соответствуют PID (есть также некоторые записи, которые не являются числовыми, их можно игнорировать). Не все системы Linux используют /proc
.
Если вы используете SELINUX, могут быть процессы, о которых вам даже не разрешено знать, но, поскольку вы не можете ничего с этим поделать, даже не беспокойтесь.