Comienzo un proceso de generación de hijos de esta manera:
let process = spawn(apiPath, {
detached: true
})
process.unref()
process.stdout.on('data', data => { /* do something */ })
Cuando comienzo el proceso, necesito mantenerlo adjunto porque quiero leer su salida. Pero justo antes de cerrar mi proceso de Nodo (el padre), quiero separar todos los procesos secundarios no terminados para mantenerlos ejecutándose en segundo plano, pero como dice la documentación :
Cuando se utiliza la opción separada para iniciar un proceso de larga duración, el proceso no se mantendrá ejecutándose en segundo plano después de que el padre salga a menos que cuente con una configuración estándar que no esté conectada al padre.
Pero con la opción stdio: 'ignore'
no puedo leer lo stdout
que es un problema.
Traté de cerrar las tuberías manualmente antes de cerrar el proceso padre, pero no tuvo éxito:
// Trigger just before the main process end
process.stdin.end()
process.stderr.unpipe()
process.stdout.unpipe()