Nodejs总是不能完整的抓取子进程的stdout数据,没用的子进程fflush(stdout)

Nodejs always cann't capture child process's stdout data completely, unless child process fllush(stdout)

我用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");

需要你的帮助!非常感谢!

默认情况下,stdout 通常会被缓冲,直到写入换行符。但是,如果 stdout 不是 tty(child_process.spawn() 就是这种情况),则所有输出都会被缓冲,无论换行符如何。

如果您不想手动使用 fflush(),您可以通过在 C 程序开始时执行一次 setbuf(stdout, NULL); 来完全禁用 stdout 缓冲。