2013-07-15 36 views
2

你好,我想發送到child_process,如ping 8.8.8.8-T,也就是平無窮多個。而一些迭代我想停止這個命令並執行了新的,但在這種情況下,我並不想殺死一個子進程。如何發送控件C的Node.js和child_processes

例子:

var spawn = require('child_process').spawn('cmd'), 
    iconv = require('iconv-lite'); 

spawn.stdout.on('data', function (data) { 
    console.log('Stdout: ', iconv.decode(data, 'cp866')); 
}); 

spawn.stderr.on('data', function (data) { 
    console.log('Stderr: ', iconv.decode(data, 'cp866')); 
}); 

spawn.stdin.write('ping 8.8.8.8 -t'+ '\r\n'); 

spawn.stdin.write(here control-c...); // WRONG 

spawn.stdin.write('dir' + '\r\n'); 

回答

2

我發現你以前question。看起來你試圖在node.js中創建/模擬一個終端。您可以使用readline從終端讀取和寫入。

要寫入控制字,你可以從它的docs看到例如:

rl.write('Delete me!'); 
    // Simulate ctrl+u to delete the line written previously 
    rl.write(null, {ctrl: true, name: 'u'}); 

直接回答這個問題,傳給你需要通過自己的ASCII值的特殊字符。 Ctrl鍵 + Ç變得ASCII字符×03。取自here的值。

spawn.stdin.write("\x03"); 
+0

很抱歉,但我真的不明白,我怎麼使用它作爲一個終端和發送,如ping。也許告訴我? spawn.stdin.write( 「\ X03」) - 不工作:( –

+0

不是爲我工作爲好,即使設置'ascii'模式'self.child.stdin.setEncoding( 'ASCII碼'); self.child.stdin。寫( 「\ X03」); // CTRL-C' – loretoparisi