Я запускаю дочерний процесс порождения следующим образом:
let process = spawn(apiPath, {
detached: true
})
process.unref()
process.stdout.on('data', data => { /* do something */ })
Когда я запускаю процесс, мне нужно держать его подключенным, потому что я хочу прочитать его вывод. Но перед закрытием моего процесса Node (родительского) я хочу отсоединить все незавершенные дочерние процессы, чтобы они работали в фоновом режиме, но, как сказано в документации :
При использовании опции detached для запуска длительного процесса он не будет работать в фоновом режиме после выхода из родительского процесса, если ему не предоставлена конфигурация stdio, которая не подключена к родительскому процессу.
Но с опцией stdio: 'ignore'
я не могу прочитать, stdout
что является проблемой.
Я пытался вручную закрыть каналы, прежде чем закрыть родительский процесс, но это не удалось:
// Trigger just before the main process end
process.stdin.end()
process.stderr.unpipe()
process.stdout.unpipe()