我想通过运行Node.js从基于C的二进制实时获取数据。我知道Node.js可以使用child_process模块运行可执行二进制文件。
所以我创建了一个简单的C / Node.js应用程序,如下所示:
// It will be compiled to a.out and run by below Node.js code
#include <stdio.h>
int main() {
int i=0;
for (i=0; i<10; i++) {
printf("%d\n", i);
sleep(1);
}
}
var spawn = require('child_process').spawn;
var cmd = spawn('./a.out');
cmd.stdout.on('data', function(data) {
console.log('stdout : ' + data);
});
cmd.stderr.on('data', function(data) {
console.log('stderr : ' + data);
});
cmd.stdout.on('end', function(data) {
console.log('end');
});
还有我的期望:
00:00] 0
00:01] 1
00:02] 2
...
00:09] 9
00:10] 10
但我看到了
00:10] 0
1
2
...
9
10
看起来所有来自二进制文件的标准输出都将存储到缓冲区,并且在二进制文件终止之后,将显示所有缓冲区数据。 我希望cmd.stdout.on('data',callback)将运行10次,但仅运行1次。
但是我想得到像流一样的结果。 如何获取流之类的数据,或者如何实时按行获取数据?
答案 0 :(得分:0)