2013-05-06 4 views
6

から読み出す際は、次のコードでSTDIN

process.stdin.resume(); 
process.stdin.setEncoding('utf8'); 

process.stdin.on('data', function(chunk) { 
    process.stdout.write('data: ' + chunk); 
}); 

process.stdin.on('end', function() { 
    process.stdout.write('end'); 
}); 

iは、CTRL + Dを使用して「終了」イベントをトリガすることができないCTRL Dを使用して「終了」イベントをトリガし、トリガなしでCTRL + Cだけ終了できません。それ。

hello 
data: hello 
data 
data: data 
foo 
data: foo 
^F 
data: ♠ 
^N 
data: ♫ 
^D 
data: ♦ 
^D^D 
data: ♦♦ 

答えて

3

私はこの変更したい:

process.on('SIGINT', function(){ 
    process.stdout.write('\n end \n'); 
    process.exit(); 
}); 

さらに資源:これに

process.stdin.on('end', function() { 
    process.stdout.write('end'); 
}); 

process docs

+0

なぜですか?....私はnode.jsサイトからこのコードを取得します。それは間違っていますか? – Misaki

+0

ご使用のNode.jsのバージョンは? – thtsigma

+0

私は0.10.4を使用しています – Misaki

4

を私もこの問題に出くわしましたし、ここで答えを見つけました: Github issue

Windows自体によって提供されるreadlineインターフェイス(例:あなたが現在使っているもの)は^ Dをサポートしていません。より多くのunix-y動作が必要な場合は、readline組み込みモジュールを使用し、stdinをrawモードに設定します。これは、ノードが生のキー押下を解釈し、^ Dが動作するようにする。 http://nodejs.org/api/readline.htmlを参照してください。

Windowsの場合、readlineインターフェイスはデフォルトで^ Dをサポートしていません。リンクされた指示に従ってそれを変更する必要があります。