我有一个小应用程序,可以由fork执行,也可以由开发人员直接执行,我希望它的配置略有不同,具体取决于它的启动方式。
我知道我总是可以传递参数来表示它是一个分支,但我只是好奇是否有办法告诉我是否能以某种方式知道子进程是否来自{{1 }}。我在fork()
环顾四周,但没有发现任何事情。
答案 0 :(得分:11)
这有点像黑客攻击,但您可以检查应用程序中是否存在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()');
}