QProcess调用外部程序

来源:互联网 发布:php生成短网址 编辑:程序博客网 时间:2024/06/07 09:12

简述:

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()







1 0
原创粉丝点击