我正在调用像这样的<{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
,它可以正常工作,但如果没有退出所有子项,原始父级就无法退出。
答案 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上的节点中的错误,应该报告它。
希望有所帮助!