例如程序:
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的主程序中,应该怎么做呢???
我也遇到了这个问题,它不是传不了,好像仍然会往stdio中写入数据,只有在子程序结束的同时,data事件才会被激活,然后你才会从
打印出数据来,如果子程序一直运行,data事件就不会被激活。
我也不知道为什么会这样。