QProcess中获取所调用进程的输出并打印

Posted on 2018-08-20

QProcess中获取所调用进程的输出并打印

在我前的面博文 在Qt中利用QProcess调用 exe 里,说了一下怎么调用外部的exe, 但是很多问题当时自己也是存疑的,很多自己想做的事情还没有完全,慢慢补充一下。 大部分内容出自QProcess调用外部程序 由于被调用的外部 exe 本身是会在控制台有信息的,所以我想在调用的时候把它找出来。 两个知识点:

1、让主线程等待外部的处理工具结束

  • QProcess::waitForFinished(int msecs = 30000) waitForFinished() 函数可以设置等待结束的时间(单位是毫秒) 。我会偏向于设置为-1,表示希望启用外部程序的这个线程完全等待外部工具运行完成 。

2、QProcess与调用程序的通信

  • readAllStandardOutput() 由于我调用的外部的exe程序有输出(控制台输出),所以我在process结束后利用readAllStandardOutput() 去获取了

    process->start(program, argus);
      
    process->waitForFinished(-1);
      
    std::string output = process->readAllStandardOutput().toStdString();
         
    std:: cerr << output ;
    

3、qDebug() 输出QString 不能换行?

本来我是用qDebug()来输出output的,但是输出来的东西全部挤在了一坨,中间夹杂着换行符 \n ,\r 之类的,所以我就用了 c++ 中的cerr了。


蚊子再小也是肉~
本站总访问量 本站访客数