Je lance un processus enfant de réapparition de cette façon:
let process = spawn(apiPath, {
detached: true
})
process.unref()
process.stdout.on('data', data => { /* do something */ })
Lorsque je démarre le processus, je dois le garder attaché parce que je veux lire sa sortie. Mais juste avant de fermer mon processus Node (le parent), je veux détacher tous les processus enfants non terminés pour les faire fonctionner en arrière-plan, mais comme le dit la documentation :
Lorsque vous utilisez l'option détachée pour démarrer un processus de longue durée, le processus ne continuera pas à s'exécuter en arrière-plan après la sortie du parent, sauf s'il est fourni avec une configuration stdio qui n'est pas connectée au parent.
Mais avec l'option, stdio: 'ignore'
je ne peux pas lire ce stdout
qui est un problème.
J'ai essayé de fermer manuellement les tuyaux avant de fermer le processus parent, mais il échoue:
// Trigger just before the main process end
process.stdin.end()
process.stderr.unpipe()
process.stdout.unpipe()