2008-12-28 8 views
27

Estoy creando procesos secundarios con fork() en C/C++.
Cuando el proceso principal finaliza (o se cancela por algún motivo), quiero que todos los procesos secundarios también se eliminen.
¿Lo hace automáticamente el sistema? ¿O tengo que hacerlo yo mismo?¿Se crean automáticamente procesos secundarios con fork() cuando se mata al padre?

Gracias.


preexistentes preguntas similares:

+0

recuerdo ver preguntas similares. P.ej. http://stackoverflow.com/questions/269494/how-can-i-cause-a-child-process-to-exit-when-the-parent-does – PolyThinker

Respuesta

32

No. Si el padre muere, los niños a ser hijos del proceso init (que tiene el proceso de id 1 y se lanza como el primer proceso de usuario por el kernel).

El proceso init comprueba periódicamente si hay hijos nuevos y los elimina si han salido (lo que libera los recursos asignados por su valor de retorno).

La pregunta ya fue tratado con respuestas calidad aquí: How to make child process die after parent exits?

+0

¿Significa eso que los procesos hijo no son asesinados de forma anómala? antes de la terminación prematura, pero espere a que estén ejecutando completamente su código y luego termine? –

Cuestiones relacionadas