मैं इस तरह से एक स्पॉन चाइल्ड प्रक्रिया शुरू करता हूं:
let process = spawn(apiPath, {
detached: true
})
process.unref()
process.stdout.on('data', data => { /* do something */ })
जब मैं इस प्रक्रिया को शुरू करता हूं तो मुझे इसे संलग्न रखने की आवश्यकता होती है क्योंकि मैं इसका आउटपुट पढ़ना चाहता हूं। लेकिन अपनी नोड प्रक्रिया (अभिभावक) को बंद करने से ठीक पहले मैं सभी समाप्त बच्चों की प्रक्रियाओं को अलग रखना चाहता हूं ताकि उन्हें पृष्ठभूमि में रखा जा सके, लेकिन जैसा कि दस्तावेज कहते हैं:
लंबे समय से चल रही प्रक्रिया को शुरू करने के लिए अलग किए गए विकल्प का उपयोग करते समय, प्रक्रिया माता-पिता के बाहर निकलने के बाद पृष्ठभूमि में नहीं चलती है जब तक कि यह एक स्टैडियो कॉन्फ़िगरेशन के साथ प्रदान नहीं किया जाता है जो माता-पिता से जुड़ा नहीं है।
लेकिन विकल्प के साथ stdio: 'ignore'
मैं नहीं पढ़ सकता stdout
जो एक समस्या है।
मैंने मूल प्रक्रिया को बंद करने से पहले पाइप को मैन्युअल रूप से बंद करने की कोशिश की लेकिन यह असफल है:
// Trigger just before the main process end
process.stdin.end()
process.stderr.unpipe()
process.stdout.unpipe()