繁体   English   中英

节点子进程无法独立运行

[英]Node child process can not run detached

我正在尝试用

child_process.fork("child.js")

并在父母退出后说还活着。 我试过像这样使用分离选项:

child_process.fork("child.js", [], {detached:true});

在使用spawn时有效,但是在使用fork分离时为true时,它只是默默地失败,甚至不执行child.js。

我也尝试过

var p = child_process.fork("child.js")
p.disconnect(); 
p.unref();

但是当父母去世时,孩子仍然死亡。 任何帮助或见识将不胜感激。

编辑:

节点版本:v5.3.0平台:Windows 8.1代码:

//Parent
var child_process = require("child_process");

var p;
try{
  console.log(1)
  p = child_process.fork("./child.js")
  console.log(2)
} catch(e){
  console.log(e)
}
p.on('error', console.log.bind(console))

p.disconnect();
p.unref();

//To keep process alive
setTimeout(() => {
  console.log(1);
}, 100000);

-

//Child
var fs = require("fs");

console.log(3);

fs.writeFileSync("test.txt", new Date().toString());

setTimeout(()=>{
  console.log(1);
}, 100000);

我假设您正在从命令行执行父文件,这可能就是为什么它“出现”叉儿童未执行的原因。 实际上,当父进程退出时,终端停止等待并因此打印新行,等待您的下一个命令。 这使得孩子似乎没有执行,但请相信我。 而且child_process.fork没有“分离”选项

在您的子进程中添加一些console.log()语句,即使父级退出后,您也应该在终端中看到输入打印。 如果您不这样做,是因为您的孩子由于错误而过早离开。 在从父进程调用它之前,直接运行您的子进程以对其进行调试。

看看这个简单的例子:

在此处输入图片说明

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM