0

spawnコマンドを使用してnodejsからコマンドラインコマンド(ここではcat)を実行しようとしています。

var spawn = require('child_process').spawn;
var cat = spawn('cat');
result = new Buffer(2048);
cat.stdout.on('data', function (data) 
 {
    data.copy(result);
 });
cat.on('exit', function (code) 
{
    console.log(result.toString());
});
cat.stdin.write(InBUFFER);
cat.stdin.end();

コマンドの出力はバッファのどこかにあるように見えますが、残りも出力されます。出力がいつ終了するかを判断するために使用できるある種のヌル文字はありますか?

更新:明確にするために:出力にはランダムな文字がたくさんあり、それらはバッファーの一部のようです。コマンドラインコマンドの有用な出力を残りのバッファーから分割する方法を探しています。

4

1 に答える 1

1

これは、表示していないInBUFFER内にあるものによって異なります。

InBUFFERたとえば"test"、に文字列がある場合、には2048までの多くのゼロが続きresultます(が呼び出されると、0は空白に変換されます)。 内部にゴミがある場合は、出力としてゴミを取得します。ファイルを読み取っていて、文字エンコードを正しく設定していない可能性があります。testtoString
InBUFFER

于 2012-11-20T23:44:21.243 に答える