我正在创建一个电子桌面应用程序,我有代码使用带有选项分离的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事件之外测试了上面的代码,当父进程处于活动状态时,它运行良好。但是在我将这些代码放在像--squirrel-uninstall
之类的squirrel事件中之后(父进程可能在子进程运行之前/期间终止),它只能运行命令,其中的任何代码(如fs函数)都不再起作用
我有一个问题是:尽管有squirrel事件,但是在节点父进程终止之后,子进程内部的逻辑代码是否可以工作?