当前位置: 首页 > news >正文

找南昌网站开发公司厦门最好的seo公司

找南昌网站开发公司,厦门最好的seo公司,买个网站多少钱,制作网站需要域名还需要什么QProcess 可用于完成启动外部程序,并与之交互通信。 一、启动外部程序的两种方式   1)一体式:void QProcess::start(const QString & program,const QStringList &arguments,OpenMode mode ReadWrite)     外部程序启动后&…

QProcess
可用于完成启动外部程序,并与之交互通信。
一、启动外部程序的两种方式
  1)一体式:void QProcess::start(const QString & program,const QStringList &arguments,OpenMode mode = ReadWrite)
    外部程序启动后,将随主程序的退出而退出。
  2)分离式:void QProcess::startDetached(const QString & program,const QStringList & arguments,const QString&workingDirectory=QString(),qint64 *pid =0)
    外部程序启动后,当主程序退出时并不退出,而是继续运行。


二、启动之前需要做的工作:
  启动一个外部程序,需要传递外部程序的路径和执行参数,参数用QStringList来代入。
  1)设置路径
    void QProcess::setProgram(const QString & program)
  2)设置参数【可选】
    void QProcess::setArguments(const QStringList & arguments)
  3)启动
  选择启动函数(两种方式)


三、启动状态
  外部程序未启动时,其状态是NotRunning;
  当启动时,其状态转变为Starting,正在启动,但此时还未调用起来;
  启动之后,继续变为Running,同时发射出started()信号,此时,可以对QProcess进行读写操作了;
  当退出时,其状态改为NotRunning,并发射出finished()信号。finished()信号会携带退出码和退出状态,可以分别通过exitCode()和exitStatus()来获得。
  当发生错误时,QProcess会发出一个error()信号,同样的,也可以通过error()来获得其错误类型,通过state()获得当前程序的状态。


四、QProcess与QIODevice
  QProcess继承于QIODevice,因此,我们可以把它当作一个I/O设备进行读写操作。

五、交互
  QProcess有两种预定义的输入通道:标准输出stdout与标准错误stderr.
  通过setReadChannel可以读取输出的通道。
  当通道的数据准备就绪时,QProcess会发出readyRead()信号。如果是标准输出,则发出readyReadStandardOutput()信号。如果是标准错误,

  则发出readyReadStandardError()信号。
  常用的读取方式有read(),readAll()或getChar(),也可以通过readAllStandardOutput()和readAllStandardError()读取标准输出和标准错误通道中的数据。
  某些程序需要设置环境才能进行特殊的操作。可以通过setEnvironment()来设置环境变量,通过setWorkingDirectory()来设置工作目录,默认的工作路径是当前调用程序的工作路径。

六、同步API
  QProcess提供了一系列的函数以提到事件循环来完成同步操作:
  1)waitForStarted()//阻塞,直到外部程序启动
  2)waitForReadyRead()//阻塞,直到输出通道中的新数据可读
  3) waitForBytesWritten()//阻塞,直到输入通道中的数据被写入
  4) waitForFinished() //阻塞,直到外部程序结束
  如果在主线程中调用这些函数,可能会造成当前用户界面不响应。

七、QProcess进程类
  Qt提供了一个QProcess类用于启动外部程序并与之通信,启动一个新的进程的操作非常简单,只需要将待启动的程序名称和启动参数传递给start()函数即可。
   例:
    Qobject *parent;
    QString program = "tar";
    QStringList arguments;
    arguments<<"czvf"<<"backup.tar.gz"<<"/home";
    QProcess *myProcess= new QProcess(parent);
    QProcess->start(program,arguments);
  当调用start()函数后,myProcess进程立即进入启动状态,但tar程序尚未被调用,不能读入标准输入输出设备。当进程完成启动后就进入“运行状态”并向外发送出
  started()信号,在输入输出方面,QProcess将一个进程看做一个类型的I/O设备,可以像使用QTcpSocket读写流类型的网络连接一样来读写一个进程。

  可以通过QIODevice::write()函数向所启动的进程的标准输入写数据,也可以通过QIODeivic::read()、QIODevice::readLine()、QIODevice::getChar()函数从这个进程的标准输出读数据。此外由于QProcess是从QIODevice类继承而来的。
Qt定义了如下的进程错误代码:
错误常量 值 描述
  QProcess::FailedToStart 0 进程启动失败
  QProcess::Crashed 1 进程成功后崩溃
  QProcess::Timedout 2 最后一次调用waitFor...()函数超时。此时QProcess状态不变,并可以再次调用waitFor...()类型的函数
  QProcess::WriteError 3 向进程中写入数据时出错。如进程尚未启动,或者输入通道被关闭时。
  QProcee::ReadError 4 从进程中读取数据时出错。如进程尚未启动时
  QProcess::UnknownError 5 未知错误。这也是error()函数返回的默认值。


八、进程的标准输出:
  stdout:通常用于控制台下输出
  stderr:通常用于进程打印错误
  它们本质上是两个独立的数据流
  可以通过调用setReadChanned()函数设置当前的读通道
  当有可读数据时Qt将发出readyRead()信号
  如果是标准输出和标准错误通道中读取数据,还会发出readyReadStandardOutput()信号
  readAllStandardOutput()函数从标准输出通道中读取数据
  readAllStandardErrot()函数从标准错误通道中读取数据
  在进程启动以前以MergedChannels参数调用setReadChannelMode()函数可以把标准输出通道和标准输出错误通道合并。

http://www.hkea.cn/news/67273/

相关文章:

  • 电商网站 设计方案百度的排名规则详解
  • 福建省建设厅网站余外链链接平台
  • 广告营销网站市场推广方案
  • 徐州企业做网站软文是什么文章
  • 网站代码备份如何优化seo
  • 百度网站公司信息推广怎么做天津做网站的网络公司
  • wordpress在线pdfseo百度站长工具查询
  • 太仓网站建设有限公司网站设计公司怎么样
  • 网站去哪做在线crm软件
  • 做360手机网站快速汕头seo排名收费
  • 网站建设总做总结宜兴百度推广公司
  • 做毕业网站的周记外贸建站优化
  • 南昌市住房和城乡建设局网站百度官网推广平台电话
  • 真人做视频网站百度怎么发布广告
  • 网站页面优化包括怎么给网站做优化
  • 哪个网站用帝国cms做的软文素材网
  • 网站建设需要的资料深圳精准网络营销推广
  • 客户网站建设公司网站排名提升软件
  • 网站建设与维护试卷论文怎么在百度上做广告
  • 做博客网站要什么技术百度网站网址是多少
  • 河北建设厅官方网站八大员考试站长工具查询
  • 大连 做网站公司爱站工具包的主要功能
  • ps做简洁大气网站必应bing国内版
  • 做公司标志用哪个网站营销自动化
  • wordpress5.0.3厦门百度seo
  • 网站开发 企业 定制系统优化大师安卓版
  • 网站内链符号seo百度站长工具
  • 网站页面太多是否做静态seo优化软件
  • mac下怎么安装wordpress关键词排名优化易下拉霸屏
  • 国内做国外代购在哪个网站好百度平台客服怎么联系