Node.js 节点子进程自身执行
我试图让脚本在完成后再次执行自己,这次使用不同的参数Node.js 节点子进程自身执行,node.js,child-process,Node.js,Child Process,我试图让脚本在完成后再次执行自己,这次使用不同的参数 child_process.exec(`node m.js ${newTimestamp} ${status.args[3]}`, (err, stdout, stderr)=>{ console.log('test'); if (err) { console.log(err); } console.log(stdout); console.log(stderr); }) 但是它被卡住了,根本不记录任何东
child_process.exec(`node m.js ${newTimestamp} ${status.args[3]}`, (err, stdout, stderr)=>{
console.log('test');
if (err) {
console.log(err);
}
console.log(stdout);
console.log(stderr);
})
但是它被卡住了,根本不记录任何东西。甚至没有console.log('test')
行。但如果我想把它换成其他东西,例如:
child_process.exec(`pwd`, (err, stdout, stderr)=>{
console.log('test');
if (err) {
console.log(err);
}
console.log(stdout);
console.log(stderr);
})
它将运行脚本并显示输出
似乎我不了解子流程的关键部分,如何正确处理此问题?根据:
在进程终止时使用输出调用回调
这意味着节点m.js
的执行仍在过程中,只有当过程完成时才会调用回调。
这就是为什么你的回调会被调用pwd
——它会在将工作目录打印到stdout后终止
看看或-他们应该满足你的需要
看起来您要搜索的是fork:
child_process.fork()方法是
child_process.spawn()专门用于生成新的Node.js
过程。与child_process.spawn()类似,ChildProcess对象是
返回。返回的子进程将有一个额外的
内置通信通道,允许消息传回
在父母和孩子之间来回移动。有关详细信息,请参见child.send()
关于('close')事件的
.fork~问题。如果我在其中运行process.exit()
,它会退出父脚本并从当前子脚本运行新的子脚本吗?继续退出并创建新的子对象?close的执行将始终在触发它的进程的上下文中调用。所以,如果您订阅进程A,您将在进程A中得到回调,但如果进程A运行进程B,而进程B运行进程C,并且A调用进程。退出,那么B也会死吗?@Kunok我想这个线程将帮助您理解。就我个人而言,我还没有与node.js进行过如此密切的合作。
callback <Function> called with the output when process terminates