如何发送控制C node.js和child_processes

时间:2013-07-15 07:16:11

标签: windows node.js child-process

你好我想发送到child_process,例如,ping 8.8.8.8-t,即无限数量的ping。我希望停止此命令并执行一些新的迭代,但在这种情况下我不想杀死子进程。

示例:

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');

1 个答案:

答案 0 :(得分: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 + C 变为ASCII字符0x03。价值取自here

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