Я хочу получать данные из двоичного файла на основе C в реальном времени, запустив Node.js.Я знаю, что 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 раз.
Но я хочу получить результат как поток.Как я могу получать данные как поток или как я могу данные построчно в реальном времени?