2016-03-03 15 views
8

ben şöyle çıkmak için düğüm işlemini kendisi ön planda bir çocuk sürecini çalıştırmak ve izin edebilmek için beklenebilir child_process.spawn için the docs göre:node.js: ön planda ve çıkış müstakil çocuğu yumurtlamaya nasıl

handoff-exec.js:

'use strict'; 

var spawn = require('child_process').spawn; 

// this console.log before the spawn seems to cause 
// the child to exit immediately, but putting it 
// afterwards seems to not affect it. 
//console.log('hello'); 

var child = spawn(
    'ping' 
, [ '-c', '3', 'google.com' ] 
, { detached: true, stdio: 'inherit' } 
); 

child.unref(); 

yerine ping komutunun çıktısını görme, sadece herhangi bir ileti veya hatasız çıkar.

node handoff-exec.js 
hello 
echo $? 
0 

Peki ... bu ana çıkış olarak ön planda bir çocuk çalıştırmak için (hiç ya) node.js mümkündür?

UPDATE: console.log('hello');'un kaldırılmasının çocuğun çalışmasına izin verdiğini buldum, ancak yine de ön plandaki stdin denetimini çocuğa iletmiyor.

+0

Olası yinelenen http://stackoverflow.com/questions/32358845/how-do-i-listen-and-spawn-multiple-child-process- in-nodejs) –

+0

Hayır. Bu, çoklu çocuk süreçlerine JS referanslarını yakalamak için JavaScript'te bir kapatma kullanmaktan ibarettir. Bu süreç referansları ve çocuğun standart girdinin kontrolünü ele geçirmesi ile ilgilidir. – CoolAJ86

+0

Değeri için kodunuzu çalıştırmayı denedim ve beklediğim gibi çalıştım - düğüm işlemi çıktı ve ping komutu çıkışı stdout'a yazdırıldı. Bu Mac OS ve node.js v5.4.1 üzerindedir. Eğer ben çok garip buluyorum console.log uncomment eğer işe yaramıyor. –

cevap

-1

) Sen

// Listen for any response: 
child.stdout.on('data', function (data) { 
    console.log(data.toString()); 
}); 

// Listen for any errors: 
child.stderr.on('data', function (data) { 
    console.log(data.toString()); 
}); 

eksik ve (child.unref gerekmez; [Nasıl dinlersiniz ve nodejs içinde spawn çoklu alt süreç] (içinde

+1

Bu, ana işlemin çalışmaya devam etmesine neden olur. – CoolAJ86

İlgili konular