1

我正在创建一个电子桌面应用程序,并且我有代码使用 spawn() 选项分离:true。我的目的是让子进程即使在父进程终止时也能继续运行。

const spawn = require('child_process').spawn;
const ls = spawn('ls', ['-lh', '/usr'], { detached: true });

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
  fs.writeFileSync('path-to-test.txt', 'stdout');
});

ls.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`);
  fs.writeFileSync('path-to-test.txt', 'stderr');
});

ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

松鼠事件https://github.com/electron/grunt-electron-installer#handling-squirrel-events

  switch (squirrelCommand) {
    case '--squirrel-install':
    case '--squirrel-updated':
      app.quit();

      return true;
    case '--squirrel-uninstall':
      app.quit();
      return true;
    case '--squirrel-obsolete':
      return true;
  }

我在松鼠事件之外测试了上面的代码,它在父进程处于活动状态时运行良好。但是在我将这些代码放入松鼠事件中之后--squirrel-uninstall(父进程可能在子进程运行之前/期间终止),它只能运行命令,其中的任何代码(如 fs 函数)不再起作用。

我的一个问题是:尽管有松鼠事件,在节点父进程终止后,子进程内的 fs 之类的逻辑代码是否可以工作?

4

0 回答 0