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

Hyo*_*yun 6 javascript fork process node.js

我有一个小的应用程序,可以由fork或直接由开发人员执行,我会根据它的启动方式稍微改变配置.

我知道我总是可以传递参数来表明它是一个分支,但我只是好奇是否有办法告诉我是否能以某种方式知道子进程中是否有来自fork().我环顾四周process但却没有发现任何事情.

rob*_*lep 14

这有点像黑客,但你可以检查process.send你的应用程序是否存在.当它开始使用fork()时它将存在.

if (process.send === undefined) { 
  console.log('started directly');
} else {
  console.log('started from fork()');
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我可能会在父级中设置一个环境变量并在子级中检查它:

// parent.js
child_process.fork('./child', { env : { FORK : 1 } });

// child.js
if (process.env.FORK) {
  console.log('started from fork()');
}
Run Code Online (Sandbox Code Playgroud)

  • 一个答案中有两个好主意,希望我能投两次票! (2认同)