matar Generalmente los padres también mata al niño.
La razón por la que está viendo al niño aún vivo después de matar al padre es porque el niño solo morirá después de que decida manejar el evento SIGKILL. No tiene que manejarlo de inmediato. Su secuencia de comandos ejecuta un comando sleep(), que no se activará para controlar ningún evento hasta que se complete la suspensión.
¿Por qué es PPID # 1? El padre ha muerto y ya no está en la mesa de proceso. child.sh no es vinculado inexplicablemente para iniciar ahora. Simplemente no tiene un padre en ejecución.Decir que está vinculado a init crea la impresión de que si de alguna manera abandonamos init, ese init tiene control sobre el cierre del proceso. También crea la impresión de que matar a un padre hará que el abuelo sea el dueño de un hijo. Ambos no son verdaderos Ese proceso hijo todavía existe en la tabla de procesos y se está ejecutando, pero no se manejarán eventos nuevos basados en su ID de proceso hasta que maneje SIGKILL. Lo que significa que el niño es un pre zombie, un muerto viviente, en peligro de ser etiquetado.
Matar en el grupo de procesos es diferente, y se usa para matar a los hermanos y el padre por el grupo de procesos #. Probablemente también sea importante tener en cuenta que "matar a un proceso" no es "matar" per se, a la manera humana, donde se espera que el proceso se destruya y que toda la memoria vuelva como si nunca hubiera existido. Simplemente envía un evento particular, entre muchos, al proceso para que lo maneje. Si el proceso no lo maneja adecuadamente, luego de un tiempo, el sistema operativo vendrá y lo "limpiará" a la fuerza.
It (kill) no ocurre inmediatamente porque el niño (o incluso el padre) podría haber escrito algo en el disco y esperar a que I/O complete o realizar alguna otra tarea crítica que pueda comprometer la estabilidad del sistema o integridad del archivo
Creo que podría cortar el 80% del texto y todas las imágenes y aún así mantener todo lo que importa en esta pregunta. – ndemou