QProcess的疑问
在主进程里面,用QProcess开了其他几个子进程。当关闭主进程窗口时,子进程窗口随着关闭,但是不会调用子进程的析构函数,里面创建的文件也没法删除。单独关闭子进程,资源就会释放。
这该如何解决呢。 --------------------编程问答-------------------- 我能想到的最笨的方法是
首先子进程使用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