¿Se pregunta si verificar / proc / N es una forma segura / confiable de ver si PID N se está ejecutando?
Andy Lester
Me preguntaba si teóricamente podría haber residuos en / proc después de que el proceso haya desaparecido.
David Dai
Respuestas:
25
Si /proces solo el procmontaje (y nadie está jugando trucos con superposiciones), no, una carpeta basada en pid solo existe mientras el proceso correspondiente exista en algún estado (incluso como zombie). De hecho, justo antes de devolver una entrada de directorio para una identificación de proceso, el núcleo vuelve a validar la existencia del proceso , por lo que en el instante en que se devuelve una entrada de directorio, el proceso correspondiente todavía está allí. El acceso a un directorio también comienza buscando el proceso correspondiente. (Si los números de línea cambian, busque proc_pident_instantiatey proc_pident_lookup.)
Puede encontrarse con problemas causados por el listado /procy el uso de los resultados más tarde (incluso unos microsegundos más tarde): un proceso puede ejecutarse cuando enumera /procy detenerse antes de actuar sobre los resultados.
Respuestas:
Si
/proc
es solo elproc
montaje (y nadie está jugando trucos con superposiciones), no, una carpeta basada en pid solo existe mientras el proceso correspondiente exista en algún estado (incluso como zombie). De hecho, justo antes de devolver una entrada de directorio para una identificación de proceso, el núcleo vuelve a validar la existencia del proceso , por lo que en el instante en que se devuelve una entrada de directorio, el proceso correspondiente todavía está allí. El acceso a un directorio también comienza buscando el proceso correspondiente. (Si los números de línea cambian, busqueproc_pident_instantiate
yproc_pident_lookup
.)Puede encontrarse con problemas causados por el listado
/proc
y el uso de los resultados más tarde (incluso unos microsegundos más tarde): un proceso puede ejecutarse cuando enumera/proc
y detenerse antes de actuar sobre los resultados.fuente
wait()
no fueron invocados?ps
muestra el proceso, su/proc
directorio debería existir.ps
acceder/proc
para encontrar la información que muestra.