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

标签 javascript node.js child-process

我正在像这样调用一个独立的 child_process(在 Windows 中)

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 fork 一些 worker。

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

如果我将 detached 设置为 false,它工作正常,但如果所有子级都退出,则原始父级无法退出。

最佳答案

我认为这可能是 node on windows 的问题。

我在 Node 文档中尝试了您的代码和示例代码,您肯定在 http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options 引用了自己在我的 Ubuntu 虚拟机上,它工作得很好。进程已分离并继续运行,除了 out.log 之外没有任何输出,因为它在后台成功运行。

我运行了一个简单的 ping 命令,还在 javascript 文件上运行了一个 Node 实例,就像您尝试做的那样,两者都运行良好。

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

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

如果它像您预期的那样工作,则您的 main.js 中可能有某些东西导致了问题。如果它也不起作用,我会说您遇到了 Windows Node 中的错误,应该报告它。

希望对一些人有所帮助!

关于javascript - Node.js 分离的子进程被调用为交互式前台进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781943/

相关文章:

javascript - 使用不同模板时 Fancybox 关闭按钮不显示

node.js - ExpressJS res.render() 错误(JSON.stringify 无法处理循环引用)

javascript - 是否有一个node.js模块可以产生1/f(粉红噪声)波动?

javascript - 使用 Express 中的 i18n-2 创建多语言 Web 应用程序

c++ - 在 Windows 中控制由 C++ std::fstream 创建的文件句柄的继承性

javascript 停止无限循环

javascript - 为什么父进程在运行一个分离的子进程后不会自动退出?

javascript - Node中功能测试代码的抽象

javascript 正则表达式 - 全局替换问题

javascript - 如何了解 Firefox Add-on SDK 中其他插件的安装情况