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

欢香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,不知道还有什么办法。
...全文
320 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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.

16,815

社区成员

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

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