Node.js分离的子进程被调用为交互式前台进程

时间:2013-07-22 07:19:11

标签: javascript node.js child-process

我正在调用像这样的<{1}}(在Windows中)

child_process

衍生过程,即var stdout = fs.openSync('./out.log', 'a'); var stderr = fs.openSync('./out.log', 'a'); var child = child_process.spawn('node', ['./main.js'], { detached: true, stdio: [ 'ignore', stdout, stderr ], env: process.env }); child.unref(); 反过来使用main.js分配一些工人。

通常情况下,子进程和子进程应该在后台运行,如果我错了,请纠正我。但是当我尝试时,子子进程在前台以交互方式运行。我不知道是什么原因导致他们这样做。有谁可以指出可能是什么问题?

如果我将child_process.fork设置为detached,它可以正常工作,但如果没有退出所有子项,原始父级就无法退出。

1 个答案:

答案 0 :(得分:2)

我认为这可能是Windows上节点的问题。

我在您的节点文档上尝试了您的代码和示例代码,以确保在我的Ubuntu虚拟机上http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options处引用它并且它运行正常。进程被分离并继续运行,除了out.log之外没有任何输出,因为它在后台成功运行。

我运行了一个简单的ping命令,并在javascript文件上运行了一个节点实例,就像你正在尝试的那样,两者都运行良好。

我建议您在Windows中使用ping命令执行相同的操作。 。

var child = child_process.spawn('ping', ['-n','25','localhost'],. . . 

如果它的效果与您期望的一样,那么main.js中可能会出现导致问题的内容。如果它也不起作用,我会说你遇到了Windows上的节点中的错误,应该报告它。

希望有所帮助!