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