前言
因为我是做的linux下开发,所以程序中需要多次在qt中调用linux命令行的命令,并且需要根据命令的执行结果做出相应的判断。qt中使用QProcess类实现进程间通信,也就是说QProcess可以调用外部程序并获取外部程序的信息。linux中通过启动bash(windows中启动cmd)来执行命令行的命令,并可以获取命令行的返回信息。
下面我详细介绍一下QProcess的具体用法和我踩过的坑以及注意事项:
QProcess的重要方法:
start(); //启动一个进程
close(); //关闭启动的外部进程
write(); //向外部进程写入数据
readAllStandardOutput(); //读取外部进程的标准输出
readAllStandardError(); //读取外部进程的错误信息
waitForStarted() //启动阻塞,等待程序启动完毕,期间整个程序所有进程阻塞
waitForFinished() //结束阻塞,等待程序结束完毕,期间整个程序所有进程阻塞
注意:QProcess中start()和write()中写的命令,末尾要加上n(linux直接加n,windows好像是rn,意思就是加个换行符),否则命令可能无法执行!!!
基础使用方法:
执行单条命令,且需要读取命令行返回信息时,代码如下:
QProcess pro;
connect(&pro,&QProcess::readyReadStandardOutput,this,[=,&pro]()mutable{ //注意我这里lambda表达式的写法,[]里的内容需要根据实际情况更改
QString Output=pro.readAllStandardOutput();
qDebug()<<"Output:"<