美文网首页
关闭软件同时,子进程也退出

关闭软件同时,子进程也退出

作者: 一沭丶 | 来源:发表于2017-11-03 17:11 被阅读16次

经过两天的各种文档查找,最终放弃第一种,只能选择beforeUnload方式来处理。

失败的一种方式:
vue中
methods:

closeServe(pid) {
    const execClose = `taskkill /pid ${pid} -t -f`;

    $childProcess.exec(execClose, (error, stdout, stderr) => {
        if (error) {
            console.log(error.stack);
            console.log('Error code: '+error.code);
            return;
        }
    })
}

mounted:

$remote.getCurrentWindow().on('close', () => {
  
    this.closeServe(this.projectList[0].execChild);
    $remote.getCurrentWindow().removeAllListeners();
})  

成功的方式:

let closeWindow = false

            window.addEventListener('beforeunload', evt => {
                if (closeWindow) return
                logFile(`[currentWindow beforeunload]`);
                evt.returnValue = false

                setTimeout(() => {
                    let result = $dialog.showMessageBox({
                        message: '是否确认退出应用?',
                        buttons: ['是', '否']
                    })
                    logFile(`[currentWindow beforeunload result] ${result}`);
                    if (result == 0) {
                        closeWindow = true

                        if(this.projectList.length) {
                    
                            this.projectList.forEach((item, index) => {

                                //不管是否启动都执行
                                item.isActive = false;
                                localStorage.setItem('auto_project_collection', JSON.stringify(this.projectList));
                                
                                logFile(`[currentWindow close forEach] ${item.isActive}`);    
                                this.closeServe(item, index, true);
                            });

                        } 

                        $currentWindow.close();
                        $currentWindow.removeAllListeners('close');

                    }
                })
            })

这个方法需要在入口的vue组件中,否则会重复多次监听,导致多次出现是否关闭的提示弹窗。

相关文章

  • 关闭软件同时,子进程也退出

    经过两天的各种文档查找,最终放弃第一种,只能选择beforeUnload方式来处理。 失败的一种方式:vue中me...

  • Swoole 进程模块高级

    进程相关高级操作 主进程退出子进程干完活后也退出子进程异常退出主进程自动重启子进程

  • 父进程退出时如何确保子进程退出

    前言 子进程退出的时候,父进程能够收到子进程退出的信号,便于管理,但是有时候又需要在父进程退出的时候,子进程也退出...

  • 进程与子进程

    讨论几种父、子进程退出时相互产生的影响,同时也整理一下进程与子进程之间的关系。 孤儿进程 (没爹)孤儿进程,顾名思...

  • 后端操作汇总

    一、管理Java程序 启动java进程(关闭terminal程序会退出): 启动后台java进程(关闭termin...

  • python学习笔记-多任务

    进程 主进程会等待子进程执行完成以后程序在退出 解决办法:主进程退出子进程销毁1、让子进程设置成为守护主进程,主进...

  • 进程之其他进程

    僵尸进程 定义 子进程先于父进程退出,父进程没有对子进程的退出做出相应的处理,此时子进程就会变成僵尸进程 影响 进...

  • 进程

    孤儿进程:父进程退出的子进程。会被init进程(进程号为1)收养,并负责其状态收集。不会产生危害。僵尸进程:退出后...

  • 进程问题

    ########父进程退出后,子进程会不被dump?不会,子进程的PPID变为1,由超级进程托管

  • python中的僵尸进程和孤儿进程

    孤儿进程:父进程退出,子进程还在运行的这些子进程都是孤儿进程,孤儿进程将被 init 进程(进程号为 1)所收养,...

网友评论

      本文标题:关闭软件同时,子进程也退出

      本文链接:https://www.haomeiwen.com/subject/umntmxtx.html