Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点子进程自身执行_Node.js_Child Process - Fatal编程技术网

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