Tendré un proceso primario que se usa para controlar los reinicios del servidor web. Le indicará al niño que deje de escuchar nuevas solicitudes, el niño le indicará a los padres que ha dejado de escuchar, luego el padre le indicará al nuevo niño que puede comenzar a escuchar. De esta forma, podemos lograr menos de 100 ms de tiempo de inactividad para reiniciar ese nivel (también tengo un reinicio de nieto de tiempo de inactividad cero, pero eso no siempre es suficiente para reiniciar).Detectar cuando el proceso primario finaliza
El administrador de servicios matará al padre cuando sea hora de apagarlo. ¿Cómo puede el niño detectar que el padre ha terminado?
Las señales se envían usando stdin y stdout del proceso hijo. Tal vez puedo detectar el final de una transmisión stdin? Espero evitar un intervalo de sondeo. Además, me gustaría que esto sea una detección muy rápida si es posible.
Creo que esto va a funcionar. El padre muere cuando es hora de cerrar, pero estoy bastante seguro de que el oyente de salida seguirá funcionando. Quizás todavía puedo [verificar el id. De proceso principal cada pocos segundos] (http://stackoverflow.com/questions/5566009/node-js-parent-process-id) y si se convierte en el número 1, significa que el padre ha muerto. –
Si se está cerrando, sus procesos recibirán 'SIGTERM' primero. Puede capturar esto y hacer la limpieza de esta manera también: 'process.on ('SIGTERM', function() { console.log ('Obtuve SIGTERM, saliendo ...'); // haga un poco de limpieza aquí. .. process.exit (0); }); ' – entropo
Y sí, hacer que los hijos comprueben periódicamente si su' PPID' se convirtió en '1' es una buena alternativa para los casos en que el padre no salió limpiamente. Ver también: http: // stackoverflow.com/questions/269494/how-can-i-cause-a-child-process-to-exit-when-the-parent-does – entropo