简述:
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()
新闻热点
疑难解答