【发布时间】:2011-08-18 20:09:14
【问题描述】:
我正在使用 QProcess 对象列表来跟踪一些需要以用户定义的时间间隔启动/停止的进程。
我可以启动和停止进程了。但是当我使用以下方法(伪代码)停止进程时会出现问题:
process->start("PathToProcess","Some Arguments");
//Do some stuff.
process->terminate();
但是,如果我尝试在其他时间再次启动该过程,则会收到错误消息:
QProcess::start: Process is already running
我可以执行 ps -ef|grep processName 并发现它确实已经死了,但它处于失效状态,我认为这会阻止我再次启动它。
我需要做些什么来防止这种失效状态,或者删除失效的方法以便我可以在不重建的情况下重新开始我的流程?
【问题讨论】:
-
你检查过
process->processState != NotRunning吗?有时孩子们在没有正确退出的情况下死亡/崩溃。 -
在终止后并在我添加了一个 kill 以进行更多测试后,尽管在操作系统中处于失效状态,该进程仍显示为“正在运行”。好决定。好像我可能需要自己做 setProcessState。