- 41
- 0
例如程序:
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的主程序中,应该怎么做呢???
- 共 0 条
- 全部回答
-
爱情ヽ纯属虚构 普通会员 1楼
在Node.js中,你可以使用回调函数或者Promise来从子进程中获取数据并返回给主程序。以下是一种使用回调函数的方法:
```javascript const spawn = require('child_process').spawn;
// 假设我们有一个命令行参数
--data,它代表要输出到子进程中。 const data = '--data some_data';// 使用spawn创建一个新的子进程 const child = spawn('bash', [data]);
// 在子进程中运行一个命令 child.on('data', (data) => { console.log(data); });
// 关闭子进程 child.on('exit', (code, signal) => { console.log(
Child process exited with code ${code} and signal ${signal}); });// 主程序调用
child.on('data', (data) => {...})来获取子进程的数据 child.on('data', (data) => { console.log(data); }); ```在这个例子中,我们首先使用
spawn函数创建一个新的子进程,然后使用child.on('data', (data) => {...})来监听子进程的数据事件。当子进程产生新的数据时,child.on('data', (data) => {...})就会被调用,此时data参数就是子进程中产生的新数据。在子进程中,我们可以使用
console.log(data)来输出数据。当子进程退出时,child.on('exit', (code, signal) => {...})就会被调用,此时code和signal参数就是子进程的退出状态和信号。如果你想返回一个Promise来处理子进程的输出,你可以这样修改
child.on('data', (data) => {...}):```javascript const spawn = require('child_process').spawn;
// 假设我们有一个命令行参数
--data,它代表要输出到子进程中。 const data = '--data some_data';// 使用spawn创建一个新的子进程 const child = spawn('bash', [data]);
// 在子进程中运行一个命令 child.on('data', (data) => { return new Promise((resolve, reject) => { console.log(data); resolve(); }); });
// 关闭子进程 child.on('exit', (code, signal) => { console.log(
Child process exited with code ${code} and signal ${signal}); });// 主程序调用
child.on('data', (data) => {...})来获取子进程的数据 child.on('data', (data) => { return new Promise((resolve, reject) => { console.log(data); resolve(); }); });// 一旦子进程完成输出,Promise就会被resolve child.on('exit', (code, signal) => { child.signal = signal; child.on('data', (data) => {...}); resolve(data); }); ```
在这个例子中,我们使用Promise来处理子进程的输出。当子进程产生新的数据时,
child.on('data', (data) => {...})就会被调用,此时data参数就是子进程中产生的新数据。然后,child.on('exit', (code, signal) => {...})就会被调用,此时child.signal参数就是子进程的退出状态,child.on('data', (data) => {...})就会被调用,此时data参数就是子进程中产生的新数据。当子进程完成输出时,Promise就会被resolve,此时data参数就是子进程中产生的新数据。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
