Bir spawn çocuk sürecine şu şekilde başlarım:
let process = spawn(apiPath, {
detached: true
})
process.unref()
process.stdout.on('data', data => { /* do something */ })
Süreci başlattığımda çıktısını okumak istediğim için bağlı tutmam gerekiyor. Ancak Düğüm sürecimi (ebeveyn) kapatmadan hemen önce, arka planda çalışmasını sağlamak için bitmemiş tüm çocuk süreçlerini ayırmak istiyorum, ancak belgelerin söylediği gibi:
Uzun süren bir işlemi başlatmak için ayrılmış seçeneği kullanırken, üst öğeye bağlı olmayan bir stdio yapılandırması sağlanmadığı sürece, üst öğeden çıktıktan sonra işlem arka planda çalışmaya devam etmez.
Ama seçenek ile hangi bir sorun olduğunu stdio: 'ignore'
okuyamıyorum stdout
.
Ana işlemi kapatmak için önce boruları manuel olarak kapatmaya çalıştım ama başarısız oldu:
// Trigger just before the main process end
process.stdin.end()
process.stderr.unpipe()
process.stdout.unpipe()