从 QThread 启动 QProcess [重复]

Posted

技术标签:

【中文标题】从 QThread 启动 QProcess [重复]【英文标题】:Starting QProcess from QThread [duplicate] 【发布时间】:2012-06-05 05:12:30 【问题描述】:

我在 Qt 中使用 QThreads,我需要从 Qt 线程中启动命令行可执行文件并在线程上下文中运行相同的命令。

我已经使用了下面提到的代码,它似乎运行良好。但是,我想知道这种用法是否允许,因为我们是从 QThread 中启动 QProcess。

void Help_Menu_Thread::run()

    Insert_Log("INFO::Help file referred by Admin");
    QProcess HelpStart;
    HelpStart.execute("c:\\windows\\hh.exe LPRS_help.chm");
    HelpStart.close();

等待您的回复。

问候,

Saurabh G.

【问题讨论】:

【参考方案1】:

只要您的主程序不必等待 qprocess 的输出或完成,就可以安全地使用这种方式。此 helpstart 进程将从作为其父进程的线程开始独立运行。但是如果您在调用HelpStart.close(); 之前使用HelpStart.waitForFinished() 会更安全

【讨论】:

感谢您的及时回复。我只是觉得 HelpStart.execute() 会阻塞,直到其中调用的可执行文件终止。如果这是真的,那么上面的用法就是正确的。对吗? 它可能会阻止您的线程进程继续进行,但显然不会阻止您的主程序。

以上是关于从 QThread 启动 QProcess [重复]的主要内容,如果未能解决你的问题,请参考以下文章

等待 QProcess 完成或持续时间超过 [重复]

QProcess, QEventLoop - 可用于并行处理

QProcess 无法启动进程:未找到进程

在线程内启动 QProcess

从 QProcess 执行 /bin/login

如何启动具有 root 权限的 QProcess?