QProcess的.waitForFinished();
时间: 2024-03-08 12:48:20 浏览: 179
QProcess资料大全
QProcess的waitForFinished()函数是一个同步函数,用于等待进程执行完成。当进程启动后,我们可以使用waitForFinished()函数来等待进程执行完成,例如:
```c++
QProcess process;
process.start("myprogram.exe");
if (process.waitForFinished()) {
// 进程执行完成
}
```
waitForFinished()函数会一直阻塞当前线程,直到进程执行完成为止。如果进程执行失败或者被终止,则waitForFinished()函数会返回false。如果进程执行成功,则waitForFinished()函数会返回true。
在waitForFinished()函数返回true之后,我们可以使用readAllStandardOutput()和readAllStandardError()函数分别读取进程的标准输出和标准错误输出。例如:
```c++
QString output = process.readAllStandardOutput();
QString error = process.readAllStandardError();
```
需要注意的是,如果进程的输出比较多,readAllStandardOutput()和readAllStandardError()函数可能会返回一个很大的字符串,这可能会占用大量的内存。在读取进程输出时,建议使用readyReadStandardOutput()和readyReadStandardError()信号,以便在有新输出时立即处理,避免占用过多的内存。例如:
```c++
QProcess process;
process.start("myprogram.exe");
QObject::connect(&process, &QProcess::readyReadStandardOutput, [&process](){
QString output = process.readAllStandardOutput();
// 处理进程标准输出
});
```
这样,每当进程有新的标准输出时,就会立即调用lambda表达式中的代码处理。
阅读全文