如何判断子 Node.js 进程是否来自 fork()?

How to tell if child Node.js Process was from fork() or not?

我有一个小应用程序,可以通过分叉执行或直接由开发人员执行,我希望根据它的启动方式对其进行略微不同的配置。

我知道我总是可以传递参数来表明它是一个叉子,但我只是好奇是否有办法告诉我是否可以在子进程中以某种方式知道它是否来自 fork()。我在 process 中环顾四周,但没有找到任何线索。

有点乱,但是您可以检查您的应用程序中是否存在 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()');
}