Возможно ли, что такая папка /proc/4587существует, хотя нет процесса с PID 4587?
Возможно ли, что такая папка /proc/4587существует, хотя нет процесса с PID 4587?
Ответы:
Если /procиспользуется только procмонтирование (и никто не разыгрывает трюки с оверлеями), нет, папка на основе pid существует только до тех пор, пока соответствующий процесс существует в каком-то состоянии (в том числе в виде зомби). Фактически, непосредственно перед возвратом записи каталога для идентификатора процесса, ядро повторно проверяет существование процесса - поэтому в момент возврата записи каталога соответствующий процесс все еще существует. Доступ к каталогу также начинается с поиска соответствующего процесса. (Если номера строк изменяются, ищите proc_pident_instantiateи proc_pident_lookup.)
Вы можете столкнуться с проблемами, вызванными перечислением /procи использованием результатов позже (даже спустя несколько микросекунд): процесс может выполняться, когда вы выводите список /proc, и останавливаться, прежде чем действовать на результаты.
wait()не были вызваны на них?
psпоказывает процесс, его /procкаталог должен существовать.
psдоступ /procк информации, которую он отображает.