当前位置:编程学习 > wap >>

QProcess的疑问

在主进程里面,用QProcess开了其他几个子进程。
当关闭主进程窗口时,子进程窗口随着关闭,但是不会调用子进程的析构函数,里面创建的文件也没法删除。单独关闭子进程,资源就会释放。
这该如何解决呢。  --------------------编程问答-------------------- 我能想到的最笨的方法是
首先子进程使用getppid可以知道父进程的PID, 
使用kill ( PID, 0)如果返回<0则说明父进程不在了! 
或者判断getppid()返回的是否初始化进程的进程号1, 
如果是,则说明父进程不在了

僵尸进程kill -9也办不了 还是轮询看看老爹在不在吧

--------------------编程问答--------------------
引用 1 楼 yiyaaixuexi 的回复:
我能想到的最笨的方法是
首先子进程使用getppid可以知道父进程的PID, 
使用kill ( PID, 0)如果返回<0则说明父进程不在了! 
或者判断getppid()返回的是否初始化进程的进程号1, 
如果是,则说明父进程不在了

僵尸进程kill -9也办不了 还是轮询看看老爹在不在吧

些楼上了。
问题已解决,原先在主进程里面直接定义QProcess pro;
改成QProcess *pro=new ...(), 就可以了。
我原来那样,主进程已推出,pro就没有了,改成动态分配之后不会释放,子进程就可以正常退出了。 --------------------编程问答-------------------- 还是没有搞清楚 直接定义QProcess pro;为什么会那样。
进程也有析构函数?? --------------------编程问答-------------------- 构造函数应该有个默认parent指针指向0的吧,你把这个指针指向父进程就可以了,父进程关闭以后,Qt会帮助你销毁子进程。 --------------------编程问答-------------------- 貌似你也可以直接使用QProcess的startDateched方法,该方法在启动之后立即返回,子进程直接被挂在init下,主进程退出不会影响子进程的运行。(linux下)
补充:移动开发 ,  Qt
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,