为什么可以';t node.js在child_process.stdout上发出数据事件?

为什么可以';t node.js在child_process.stdout上发出数据事件?,node.js,Node.js,这是我的Node.JS代码 var rec = spawn('rec.exe'); rec.stdout.setEncoding('ascii'); rec.stdout.on('data', function (data) { console.log(data); //do something } ); 和我的C++程序(CygWin编译)使用Prtff()编写STDUP。p> 但数据事件从未发出 我确信我的C++代码有问题,因为它和其他一些命令一样,比如ping。 然后我注意到,在

这是我的Node.JS代码

var rec = spawn('rec.exe');
rec.stdout.setEncoding('ascii');
rec.stdout.on('data', function (data) {
console.log(data);
    //do something
}
);

和我的C++程序(CygWin编译)使用Prtff()编写STDUP。p> 但数据事件从未发出

我确信我的C++代码有问题,因为它和其他一些命令一样,比如ping。 然后我注意到,在这种情况下,事件被发出

if(fd==-1)
{
    printf("Failed,again\n");
    return 0;
}
这意味着当流程退出时,一切正常。但那不是我想要的


有人能帮我吗?谢谢。

< P>听起来你的C++程序有缓冲问题。它可能不会自动用每一行刷新stdout的缓冲区,所以所有的输出都“聚集”在一起,直到它退出。我知道它可以使用一些
ioctl
设置来改变这一点,但我早就忘记它们是什么了。搜索“标准输出缓冲”可能会发现一些有用的东西

if(fd==-1)
{
    printf("Failed,again\n");
    return 0;
}