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
缓冲。
我用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
缓冲。