【问题标题】:How to tell if child Node.js Process was from fork() or not?如何判断子 Node.js 进程是否来自 fork()?
【发布时间】:2015-08-26 02:31:19
【问题描述】:

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

我知道我总是可以传递参数来表明它是一个 fork,但我只是好奇是否有办法判断我是否可以在子进程中知道它是否来自 fork() .我在process 中环顾四周,但没有发现任何信息。

【问题讨论】:

    标签: javascript node.js process fork


    【解决方案1】:

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

    【讨论】:

    • 谢谢!环境变量看起来是完成它的好方法。
    • 一个答案中有两个好主意,希望我能投票两次!
    猜你喜欢
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    相关资源
    最近更新 更多