QProcess学习
来源:互联网 发布:python 3教程 编辑:程序博客网 时间:2024/05/16 06:23
QProcess
Qt提供了一个QProcess类用于启动外部程序并与之通信.
当调用start()函数后,myProcess进程立即进入启动状态,但tar程序尚未被调用,不能读写标准输入输出设备.
当进程完成启动后就进入"运行状态"并向外发出started()信号.在输入输出方面,QProcess将一个进程看做一
个流类型的I/O设备,可以像使用QTcpSocket读写流类型的网络连接一样来读写一个进程.可以通过QIODevice::write()
函数向所启动进程的标准输入写数据,也可以通过QIODevice::read().QIODevice::readLine()和QIODevice::getChar()
函数从这个进程的标准输出读数据.此外由于QProcess是从QIODevice类继承而来的,因四级,它也可以作为QXmlReader
的数据在源,或者为QFtp产生上传数据.最后,当进程退出时QProcess进入起始状态----"非运行状态",并发出finished()
信号.
和退出状态,可以调用exitCode()函数和exitStatus()函数分别获取最后退出进程的这两个值.其中,Qt定义的进程"退出
状态"只有正常退出和进程崩溃两种,分别对应值QProcess::NormalExit(值0)和QProcess::CrashExit(值1).当进程在运
行中产生错误时,QProcess将发出error()信号,可以通过,调用error()函数返回最后一次产生错误的类型,并通过,state()
找出此时进程所处的状态.Qt定义了如下的进程错误代码:
----------------------------------------------------------------
错误常量 值 描述
QProcess::FailedToStart 0 进程启动失败
QProcess::Crashed 1 进程成功启动后崩溃
QProcess::Timedout 2 最后一次调用waitFor...()函数超时.此时QProcess状态不变,并可以再次调用waitFor()类型的函数
QProcess::WriteError 3 向进程写入时出错.如进程尚未启动,或者输入通道被关闭时
QProcess::ReadError 4 从进程中读取数据时出错.如进程尚未启动时
QProcess::UnknownError 5 未知错误.这也是error()函数返回的默认值
进程的标准输出:
stdout:通常用于控制台下输出
stderr:通常用于进程打印错误
它们本质上是两个独立的数据流.
可以通过调用setReadChanned()函数设置当前的读通道
当有可读数据时Qt将发发出readyRead()信号
如果是标准输出和标准错误通道中读取数据,还会发出readyReadStandardOutput()信号
如果是标准错误也会发出readyReadStandardError()信号
readAllStandardOutput()函数从标准输出通道中读取数据
readAllStandardErrot()函数从标准错误通道中读取数据
在进程启动以前以MergedChannels参数调用setReadChannelMode()函数可以把标准输出通道和标准输错误通道合并
例:
#include <QApplication>
#include <QProcess>
#include <QString>
#include <iostream>
int main(int argc, char *argv[])
{
}
http://blog.sina.com.cn/s/blog_7be419690100xlmj.html
0 0
- QProcess学习
- QProcess学习
- QProcess
- QProcess
- QProcess
- QProcess
- QProcess用法
- QProcess 使用
- Qt QProcess
- QProcess应用
- QProcess start
- QProcess调用外部程序:QProcess::start与QProcess::execute
- QProcess调用外部程序:QProcess::start与QProcess::execute
- QProcess Class Reference
- QProcess类似ShellExecute
- Qt QProcess应用
- QProcess中有空格
- QProcess使用感想
- 交换十六进制的的高低字节
- 版本管理:Git 使用起步(一)
- Git SSH登录
- win8任务管理器中进程网络始终为0的解决方案
- 20140226Library
- QProcess学习
- Linux如何挂载根文件系统
- 大臣的旅费
- Integer Intervals
- 向量容器
- 五种不同颜色的球随机抽出三个的排列组合问题
- oracle11g空表导出问题
- ubuntu下安装Apache+PHP+Mysql
- java 下载文件解决文件名乱码问题