暂停并恢复Qt中QProcess启动的子流程

时间:2016-07-17 07:25:12

标签: c++ qt qprocess

如何暂停和恢复我在Qt中作为QProcess启动的子进程?

我使用QProcess启动espeak(文本到语音合成器)作为子进程(我通过它的stdin将文本提供给它):

espeak = new QProcess(this);
espeak->start("espeak");
espeak->write(text.toUtf8());

由于它是一个子进程,我对它没有很多控制权,但是我想添加暂停和恢复语音的选项,我打算通过暂停和恢复子进程来实现它。

然而,我在QProcess中找不到一个函数,所以也许我应该使用特定于平台的方式。我在Linux上,所以我可能会发送一个信号 - SIGSTOP和SIGCONT,as suggested by this thread。但是,我需要进程句柄/ pid。

1 个答案:

答案 0 :(得分:3)

由于我在linux上,我使用了kill()函数。

#include <signal.h>
...
kill(process->pid(), SIGSTOP); // suspend
kill(process->pid(), SIGCONT); // resume