【发布时间】:2018-11-30 22:12:05
【问题描述】:
我有一个电子应用程序,它使用child_process.exec 来运行长时间运行的任务。
当用户在这些任务期间退出应用程序时,我正在努力管理。
如果他们退出我的应用程序或点击关闭,子进程将继续运行直到它们完成,但是电子应用程序窗口已经关闭并退出。
有没有办法通知用户有进程仍在运行,当他们完成后关闭应用程序窗口?
我的main.js 中只有标准代码:
// Quit when all windows are closed.
app.on('window-all-closed', function() {
// On OS X it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform != 'darwin') {
app.quit();
}
});
我应该在某处添加支票吗?
感谢您的帮助
已编辑
在完成之前,我似乎无法获得child_process 的 PID。这是我的child_process 代码
var loader = child_process.exec(cmd, function(error, stdout, stderr) {
console.log(loader.pid)
if (error) {
console.log(error.message);
}
console.log('Loaded: ', value);
});
我应该尝试以不同的方式获得它吗?
【问题讨论】:
-
期望的行为是什么,在应用关闭时自动终止子进程,还是让它继续运行直到完成然后自动关闭?
-
@mscdex 最好杀死所有子进程然后退出应用程序这可能吗?
-
另外,当你调用
child processes时,你应该得到 pids 并通过它杀死它。 -
@shriek 我试图获取 PID,但它只在进程结束时给我 PID。我一定做得不对。我已经编辑了我最初的问题以包含脚本的那部分内容。有任何想法吗?谢谢
-
对于长时间运行的任务
child_process.spawn和{ detached: true }更合适,我已经在我的电子应用程序中使用它。