父进程中怎么判断子进程退出

欢香Love 2013-07-24 09:42:26

VTRP_TypeItems m_vtrAllTypeItems;(这个变量里面存的是子进程队列) vector类型

每个元素的类型是下面的一个结构体:
struct DS_ProcessItem :
{
QProcess* pProcess;

QString strProcessName; // 可执行文件路径及文件名
QString strExeFile; // 可执行文件路径及文件名
QString strParam; // 命令行参数
bool bNewWindow;
bool bShow;

bool bRegisted;
bool bReserved;

QString strExtraData; // 扩展参数

QDateTime dtUpdateTime;

};

本来想根据子进程的pid判断它是否退出,但是
根据 QProcess的 PID()方法获得子进程的PID,但是子进程退出后,pid也不会变为0,不知道还有什么办法。
...全文
297 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiuxianshen 2013-07-24
  • 打赏
  • 举报
回复
1. 把QProcess的finished信号连接到自己的槽函数来识别

void finished(int exitCode, QProcess::ExitStatus exitStatus)
2. 把QProcess的stateChanged信号连接到自己的槽函数来识别

void stateChanged(QProcess::ProcessState newState)
enum ProcessState { NotRunning, Starting, Running }
欢香Love 2013-07-24
  • 打赏
  • 举报
回复
麻烦能不能详细说一下,谢谢
yaozhiyong110 2013-07-24
  • 打赏
  • 举报
回复
绑定QProcess的 finished 信号...
yaozhiyong110 2013-07-24
  • 打赏
  • 举报
回复
connect(&mProcess, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished())); void processFinished() { QProcess process = qobject_cast<QProcess*>(sender()); // 这个process就是你定义的 QProcess* pProcess;你可以根据这个找到对应的DS_ProcessItem结构 // 然后线程退出了你该做什么就做什么... }
欢香Love 2013-07-24
  • 打赏
  • 举报
回复
假如绑定进程finish信号的连接函数这样写: connect(&mProcess, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(processFinished(int,QProcess::ExitStatus))); 我不知道processFinished()函数该怎么写,processFinished()的参数和finished()参数怎么给,或者给我个完整点的代码,感谢……
一如当初 2013-07-24
  • 打赏
  • 举报
回复
QProcess::ExitStatus QProcess::exitStatus() const Returns the exit status of the last process that finished. On Windows, if the process was terminated with TerminateProcess() from another application this function will still return NormalExit unless the exit code is less than 0.
Re: 《Linux 进程管理命令》   ---------------------------------------内容提要: 01/15)命令 ps         :查看进程(快照)02/15)命令 pstree   :显示进程状态树03/15)命令 pgrep   :查找匹配条件的进程04/15)命令 kill        :终止进程号(1277)05/15)命令 killall    :通过进程名(nginx)终止进程/进程)06/15)命令 pkill      :通过进程名终止进程(通杀)/终止客户端(pst/tty)07/15)命令 top       :实时显示系统各个进程的资源占用状况(录像)08/15)命令 nice      :调整程序运行时的优先级09/15)命令 renice   :调整运行进程的优先级10/15)命令 nohup  :用户退出系统,进程继续工作11/15)命令 strace   :跟踪进程的系统调用12/15)命令 ltrace    :跟踪进程调用库函数13/15)命令 runlevel:输出当前运行级别14/15)命令 init        :初始化 Linux 进程15/15)命令 service  :管理系统服务  本人在教学和实战过程发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。 对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。 研磨每一个命令就是擦拭手的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手的武器发挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功! 本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。 本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学就不再赘述! 《参透 VMware 桌面级虚拟化》 《在虚拟机安装模版机(包括应用软件等)》 《SecureCRT 连接 GNS3/Linux 的安全精密工具》

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧