Eu inicio um processo filho spawn desta maneira:
let process = spawn(apiPath, {
detached: true
})
process.unref()
process.stdout.on('data', data => { /* do something */ })
Quando inicio o processo, preciso mantê-lo anexado, porque quero ler sua saída. Mas, pouco antes de fechar meu processo Node (o pai), quero desanexar todos os processos filhos não concluídos para mantê-los em execução em segundo plano, mas como a documentação diz:
Ao usar a opção desanexada para iniciar um processo de longa execução, o processo não continuará sendo executado em segundo plano após a saída do pai, a menos que seja fornecida uma configuração stdio que não esteja conectada ao pai.
Mas com a opção stdio: 'ignore'
não consigo ler o stdout
que é um problema.
Tentei fechar manualmente os pipes antes para fechar o processo pai, mas não obtive êxito:
// Trigger just before the main process end
process.stdin.end()
process.stderr.unpipe()
process.stdout.unpipe()