我有一个小型应用程序,可以通过fork或直接由开发人员执行,并且根据其启动方式,我对其进行的配置会略有不同。

我知道我总是可以传递参数来表明它是一个fork,但是我只是好奇是否有一种方法可以告诉我是否可以在子进程中知道它是否来自fork()。我用process环顾四周,但没有发现任何内容。

最佳答案

这有点hack,但是您可以检查应用程序中是否存在 process.send 。当它开始使用fork()时,它将存在。

if (process.send === undefined) {
  console.log('started directly');
} else {
  console.log('started from fork()');
}

就个人而言,我可能会在父级中设置一个环境变量,然后在子级中检查该变量:
// parent.js
child_process.fork('./child', { env : { FORK : 1 } });

// child.js
if (process.env.FORK) {
  console.log('started from fork()');
}

关于javascript - 如何判断子Node.js进程是否来自fork()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30763112/

10-16 21:26