将缓冲区限制为nodejs子进程的输出

时间:2012-11-19 13:06:44

标签: node.js buffer spawn

我正在尝试使用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();

命令的输出似乎在缓冲区的某处,但其余的也输出。是否有某种空字符可用于确定输出何时结束?

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

1 个答案:

答案 0 :(得分:1)

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

如果您在InBUFFER中有一个字符串,例如"test"result将包含test,后跟大量零,最多2048(0将会调用toString时转换为空白。
如果你在InBUFFER里面有垃圾,你就会得到垃圾作为输出。也许您正在阅读文件而不是正确设置字符编码。