2009-09-29 21 views

Respuesta

16

Tienes que hacer que los subprocesos sean demoníacos para que se eliminen cuando el padre muere (o muere); de lo contrario, son adoptados por init (1).

+1

Aquí hay un enlace a cómo crear un proceso zombie si está interesado en cómo se crean y experimentar cómo se manejan para su sistema: http://www.unix.com/unix-dummies-questions-answers/100737-how- do-you-create-zombie-process.html – Klathzazt

+4

procesos daemonic, padre, padre, hijo y zombie. Las computadoras cuentan una historia tan divertida y caprichosa. – jwarner112

23

No, los procesos secundarios no se eliminan necesariamente cuando se mata al principal.

Sin embargo, si el niño tiene una tubería abierta desde la cual está escribiendo y la principal está leyendo, obtendrá un SIGPIPE cuando intente escribir en la tubería, para lo cual la acción predeterminada es eliminarla. Eso es a menudo lo que sucede en la práctica.

8

En UNIX, no existe una relación forzada entre las vidas del proceso primario y secundario. Estrictamente hablando, el proceso solo terminará cuando invoquen exit() o reciban una señal no controlada para la cual la acción predeterminada finalizará.

Sin embargo, todo un "grupo de proceso en primer plano" en un "terminal de control" puede recibir señales como SIGINT y SIGQUIT cuando el usuario realiza ctrl-C, ctrl- \, etc. en que terminal. El comportamiento específico se implementa parcialmente mediante el shell de inicio de sesión (con la ayuda del controlador tty). Los detalles pueden ser bastante complicados: mira here y here

-9

Solo necesitas saber qué proceso o servicio deseas matar. En mi caso, httpd es.

killall -9 httpd 

matará a todos los procesos secundarios de httpd.

+0

Completamente perdido el punto de la pregunta. –

+0

Esta publicación no responde a la pregunta planteada, y como otras respuestas sí, puede que desee eliminar esta publicación. –

-1

Si cierra el terminal pid que es la identificación del proceso principal del proceso, entonces la terminal se cierra. Y cuando la terminal se cierra, todos sus procesos también mueren. Pero si creas un subcartera en el intérprete de órdenes, entonces si creas un proceso y eliminas el ppid de ese proceso, solo ese subcorte matará y su hijo quedará huérfano. Su padre se convierte en init y pid es 1.

[aprendiz @ SIPL ~] $ ps -ef | grep sleep trainee 3893 3870 0 10:55 pts/1 00:00:00 sleep 4000 aprendiz 3895 3788 0 10:55 pts/0 00:00:00 grep --color = auto dormir [aprendiz @ SIPL ~] $ kill - 9 3870 [aprendiz @ SIPL ~] $ ps -ef | grep sleep trainee 3893 1 0 10:55 pts/1 00:00:00 sleep 4000 aprendiz 3906 3788 0 10:55 pts/0 00:00:00 grep --color = auto dormir

Cuestiones relacionadas