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

该命令的输出似乎在 Buffer 中的某个位置,但其余部分也已输出。是否有某种空字符可用于确定输出何时结束?

更新:澄清一下:输出中有很多随机字符,它们似乎是缓冲区的一部分。我正在寻找一种将命令行命令的有用输出与缓冲区的其余部分分开的方法。

4

1 回答 1

1

这取决于您在 InBUFFER 中拥有的内容,而您没有显示这些内容。

InBUFFER例如"test",如果你有一个字符串,result将包含test很多零,最多 2048(toString调用时 0 将转换为空白)。
如果你里面有垃圾InBUFFER,你会得到垃圾作为输出。也许您正在读取文件并且没有正确设置字符编码。

于 2012-11-20T23:44:21.243 回答