我使用nodejs捕获其子进程的stdout数据,但总是捕获子进程的stdout数据的前一部分。当我添加 fllush(stdout)时,它可以正常工作。但我不知道为什么,也不想添加flush(stdout)。
这是我的代码:
var tail_child = spawn(exefile, [arg1, arg2, arg3]);
tail_child.stdin.write('msg\n');
tail_child.stdout.on('data', function(data) {
console.log(data);
});
child_process.c
printf("data\n");
需要你的帮助!非常感谢你!
答案 0 :(得分:1)
默认情况下,stdout
通常会被缓冲,直到写入换行符。但是,如果stdout
不是tty(这是child_process.spawn()
的情况),则无论换行如何都会缓冲所有输出。
如果您不想手动使用fflush()
,则可以在C程序开头执行stdout
一次完全禁用setbuf(stdout, NULL);
缓冲。