子进程是否依赖于其父进程?

时间:2018-06-25 14:44:21

标签: node.js child-process

我对节点子进程的工作方式有一些疑问。

让我们从用例开始:

我的节点脚本是应该的,以启动假设是持久的PHP脚本。因此,当PHP进程停止时,需要自动重启。

为了实现这一目标,这是我完成的脚本:

const { spawn } = require('child_process')
const path = require('path')
const restartOnExit = true
const queue = 'myQueue'

// We create the child process
const queueProcess = spawn('php', [path.join(__dirname, 'script.php')])

// We log outputs from the php script
queueProcess.stdout.on('data', (data) => {
    console.log(`stdout [${queue}]: ${data}`)
})

queueProcess.stderr.on('data', (data) => {
    console.log(`stderr [${queue}]: ${data}`)
})

// We restart the script on close if necessary
queueProcess.on('close', (code) => {
    console.log(`[${queue}] exited with code ${code}, relaunching if necessary...`)

    // If the script stops, it needs to be automatically restarted:
    if (restartOnExit) {
        launchQueue(queue, true)
    }
})

这样,一切正常。但是我对有关节点父级的php脚本的行为有一些疑问:

  • 如果节点脚本被杀死,会发生什么? PHP脚本也会被杀死吗?
    • 如果是,是否正在处理exit节点处理程序,因为restartOnExit变量设置为true,所以重新启动了另一个PHP脚本?
  • 我可以安全地重新启动我的节点脚本而不检查先前启动的PHP脚本的状态吗(我不希望同时运行多个子进程)?

0 个答案:

没有答案