node js 中怎么样把spawn产生的子进程中数据返回给node js主程序

例如程序:

include <stdio.h>

include <unistd.h>

int main() {
int cntr = 0;
while(1) {
sleep(1);
cntr++;
printf(“cntr = %dn”, cntr);
}

}
编译成getpsdata文件后,
然后通过:
var spawn = require(‘child_process’).spawn;
var ps = spawn(’./getpsdata’, {stdio: [‘pipe’, ‘pipe’, ‘pipe’]});

if(ps.stdout !== null) {

ps.stdout.on(‘data’, function(data) {
  console.log(‘data’, data.toString());
});

}else{

console.log(ps.stdout);

}
// ps.stdout.on(‘data’, function(data) {
// console.log(‘data’, data.toString());
// });

if(ps.stderr !== null) {

ps.stderr.on(‘data’, function(data) {
  console.log(‘data’, data.toString());
});

}else{

console.log(ps.stderr);

}

// ps.stderr.on(‘data’, function(data) {
// console.log(‘error’, data.toString());
// });

ps.on(‘close’, function(code) {
console.log(‘close’, code);
});

ps.on(‘exit’,function(code) {

console.log(‘exit’, code);

});

ps.on(‘error’, function(code) {
console.log(‘error’, code);
});
我想把getpsdata里面的打印的数据传给node的主程序中,应该怎么做呢???

阅读 2.7k
1 个回答
新手上路,请多包涵

我也遇到了这个问题,它不是传不了,好像仍然会往stdio中写入数据,只有在子程序结束的同时,data事件才会被激活,然后你才会从

ps.stdout.on(‘data’, function(data) {
  console.log(‘data’, data.toString());
});

打印出数据来,如果子程序一直运行,data事件就不会被激活。
我也不知道为什么会这样。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题