2

这是我的 Node.JS 代码

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

我的 C++ 程序(由 Cygwin 编译)使用 printf() 向标准输出写入一些内容。

if(bufsize!=0&&rec[0]=='0')
    {
    printf("%s\n",rec);
    //printf("Received,write into exchange file\n");
    //fp=fopen("recvdata.txt","w");
    //fprintf(fp,"%s\n",rec);
        //fclose(fp);
}

但是永远不会发出数据事件。

我确定我的 C++ 代码有问题,因为它可以与 ping 等其他命令一起使用。

然后我注意到在这种情况下,事件被发出

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

这意味着当进程退出时,一切正常。但这不是我想要的。

有人能帮我吗?谢谢。

4

1 回答 1

1

听起来您的 C++ 程序存在缓冲问题;它可能不会自动刷新stdout每一行的缓冲区,因此所有输出“聚集”直到它退出。我知道有一些ioctl设置可以用来改变它,但我早就忘记了它们是什么。搜索“stdout 缓冲”可能会带来一些有用的信息。

于 2012-07-11T06:15:23.097 回答