首页 > 学院 > 开发设计 > 正文

QProcess调用外部程序

2019-11-06 08:57:32
字体:
来源:转载
供稿:网友

简述:

QPRocess类的作用是启动一个外部的程序并与之交互。

            QProcess *cmd = new QProcess;            #ifdef _TTY_ARMV4_            QString strArg = "ping -s 1 -c 1 " + b_tmpipStr;        //linux平台下的格式            #else            QString strArg = "ping " + b_tmpIpStr + " -n 1 -w " + QString::number(m_timeoutInt) ;  //windows下的格式            #endif            cmd->start(strArg);            cmd->waitForReadyRead();            cmd->waitForFinished();            QString retStr = cmd->readAll();            if (retStr.indexOf("TTL") != -1)            {                qDebug() << m_curIpStr <<"is online!/n";            }            retStr.clear();

1、QProcess::start()与QProcess::execute()

QProcess::start()与QProcess::execute()都能完成启动外部程序的任务,但start()是非阻塞的,而execute()是阻塞的。换句话说,execute()=start()+waitforFinished()。

2、获取返回值

在QProcess下,则通过:

int QProcess::execute()int QProcess::exitCode()

获得返回值。

3、输出

readAllStandardOutput()函数从标准输出通道中读取数据

readAllStandardErrot()函数从标准错误通道中读取数据

setStandardOutputFile()函数设置输出到的文件,相当于前面的重定向

setStandardErrorFile()函数设置错误到的文件

由于QProcess是QIODevice的派生类,故:

read()readLine()...

都可以直接用获取被调用程序的标准输出。

注:输出前,最好调用waitForReadyRead()函数

4、进程终止

在QProcess中,则对应:

QProcess::kill()QProcess::terminate()QProcess::close()


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表