3

我运行 CMD 来生成,但是如果你给我发送一个 ping 命令,我无法摆脱它,我怎样才能发送控制台控制 + c,以避免这种情况?谢谢!

var fs = require('fs');
var iconv = require('iconv-lite');
function sendData (msg) {
    console.log('write msg ', msg);
    cmd.stdin.write(msg + "\r\n");
}
function execCommand() {
    console.log('start command line')
    var s = { 
        e : 'exec_command',
        d : {
          data : {}
        }
    };
    cmd = require('child_process').spawn('cmd', ['/K']);

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

}

execCommand();
sendData('ping e1.ru -t');
sendData( EXIT ??? )

???我想通过 node.js 制作一个控制台,一个成熟的控制台。

sendData('dir');
sendData('cd /d Windows');
sendData('ping 8.8.8.8 -t');
senData( CONTROL + C );
senData('dir')
4

1 回答 1

2

您需要明确调用:

cmd.kill();

这样就行了。如果您需要相当于CTRL-Cthen 调用:

cmd.kill('SIGINT');

有关更多信息,请参阅child_process.kill文档。

于 2013-05-02T07:52:06.407 回答