5

こんにちは、たとえば、ping 8.8.8.8-t、つまり無数のpingをchild_processに送信したいです。そして、このコマンドを停止して新しいコマンドを実行したい繰り返しのいくつかがありますが、この場合、子プロセスを強制終了したくありません。

例:

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

1 に答える 1

3

以前の質問を見つけました。node.js 内からターミナルを作成/エミュレートしようとしているようです。端末からの読み書きにはreadlineを使用できます。

制御文字を記述するには、ドキュメントの例を参照してください:

  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 になります。ここから取得した値。

  spawn.stdin.write("\x03");
于 2013-07-15T15:30:42.163 に答える