首页 > 编程知识 正文

qt执行shell命令,qt关闭指定进程

时间:2023-05-06 11:56:30 阅读:28127 作者:4011

品质管理系统

它可以用于完成外部程序的启动和通信。

一、启动外部程序的两种方式

1 )一体化) void qprocess :3360 start (constqstringprogram,const QStringList arguments,OpenMode mode=ReadWrite ) )。

外部程序启动后,随着主程序的结束而结束。

2 )分离式) void qprocess :3360 start detached (constqstringprogram,const QStringList arguments,constqstringworkingdirectory

外部程序启动后,主程序结束时不结束,继续执行。

二、启动前要做的工作:

要启动外部程序,必须传递外部程序的路径和执行参数。 参数将在QStringList中引入。

1 )设置路径

void qprocess :3360集程序(constqstringprogram )。

2 )设定参数【选项】

语音质量处理:3360集协议(constqstringlistarguments )。

3 )启动

选择启动函数。 有两种方法

三.启动状态

如果没有启动外部程序,则该状态为NotRunning;

启动后,其状态将更改为Starting,并且正在启动,但此时尚未调用

启动后,继续运行,同时发送started ()信号。 此时,可以对QProcess执行读写操作。

结束后,该状态变为NotRunning,同时发出finished () )信号。 完成) )信号具有退出代码和退出状态,分别为退出代码()和退出状态() )获取。

如果发生错误,QProcess会发出错误()信号。 同样,也可以在error )、state )和中获取当前程序的状态。

四. QProcess和QIODevice

QProcess继承为QIODevice,因此可以作为I/O设备读写。

五.互动

QProcess有两个预定义的输入通道:标准输出stdout和标准错误stderr。

可以读取setReadChannel输出的通道。

通道数据准备好后,QProcess发送就绪读取()信号。 对于标准输出,发出readyReadStandardOutput ()信号。 如果是标准错误,

发出readyReadStandardError ()信号。

常见的读取方法包括read ()、readAll ()或getChar () )。 也可以从readAllStandardOutput )、readAllStandardError )读取标准输出和标准错误通道的数据。

某些程序需要设置环境才能执行特殊操作。 环境变量为setEnvironment (,工作目录为setWorkingDirectory ),默认工作路径为当前调用程序的工作路径。

六.同步API

QProcess提供了一组函数,用于提及事件循环以完成同步操作。

1 )阻止等待()//直到外部程序启动

2 )阻止waitForReadyRead ()//输出通道读取新数据

3 )阻止waitForBytesWritten ()//直到写入输入通道数据

4 )阻止等待() )//直到外部程序结束

在主线程中调用这些函数可能会导致当前用户界面没有响应。

七. QProcess流程类

Qt提供了用于启动和通信外部程序的QProcess类。 启动新进程的操作很简单,只需将要启动的程序名称和启动参数传递给start ()函数即可。

示例:

q对象*父对象;

qstring程序=' tar ';

质量列表协议;

arguments ' czvf ' ' backup.tar.gz ' '/home ';

qprocess * my process=new qprocess (parent );

qprocess-start (程序,协议);

start ) )函数被调用后,myProcess进程将立即启动,但tar程序尚未被调用,无法加载到标准输入/输出设备中。 进程启动完成后,将进入“运行状态”,并发送到外部

started ) )在输入/输出方面,QProcess将该过程视为一种类型的I/O设备,并且可以像使用QTcpSocket读写流类型的网络连接一样读写该过程

可以使用QIODevice:write ()函数将数据写入已启动进程的标准输入,也可以使用QIODeivic:read )、QIODevice:readLine、qiodevice : readline

Qt定义了以下进程错误代码:

错误常数值的说明

qprocess :3360故障到启动0进程启动失败

QProcess:Crashed 1进程成功后崩溃

QProcess:Timedout 2上次调用waitFor . ()函数时超时。 此时QProcess的状态不变。 waitFor . () ) )类型的函数

QProcess:WriteError 3将数据写入进程时发生错误。 如果进程尚未启动,或者输入通道已关闭。

QProcee:ReadError 4从进程读取数据时发生错误。 如果进程未启动

qprocess :3360未知错误。 这也是error ) )函数返回的默认值。

八、工艺标准输出:

stdout:通常用于控制台上的输出

stderr:通常用于进程打印错误

本质上是两个独立的数据流

可以通过调用setReadChanned ()函数设置当前读取通道

如果有可读数据,Qt将发出就绪读取)信号

对于标准输出和标准错误通道中的读取数据,还发出readyReadStandardOutput )信号

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

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

可以在进程启动之前调用具有合并通道参数的setReadChannelMode )函数,以合并标准输出通道和标准输出错误通道。

The future's not set,thereisnofatebutwhatwemakeforourselves。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。