QProcess的问题
来源:互联网 发布:软件造价评估公司 编辑:程序博客网 时间:2024/06/07 22:31
在linux调用外部程序
QStringList agrs;
QProcess prcess;
args<<"-c" -c左边不能有空格,否则无法正确执行
args<<" sudo apt-get install minicom"
process.start("/bin/sh",args);
三、启动状态
外部程序未启动时,其状态是NotRunning;
当启动时,其状态转变为Starting,正在启动,但此时还未调用起来;
启动之后,继续变为Running,同时发射出started()信号,此时,可以对QProcess进行读写操作了;
当退出时,其状态改为NotRunning,并发射出finished()信号。finishe()信号会携带退出码和退出状态,可以分别通过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()来设置工作目录,默认的工作路径是当前调用程序的工作路径。
六、Synchronous Process API (同步进程API)
QProcess提供了一系列的函数以提到事件循环来完成同步操作:
(1)waitForStarted() : 阻塞,直到外部程序启动
(2)waitForReadyRead() : 阻塞,直到输出通道中的新数据可读
(3)waitForBytesWritten() : 阻塞,直到输入通道中的数据被写入
(4)waitForFinished() : 阻塞,直到外部程序结束
如果在主线程(QApplication::exec())中调用这些函数,可能会造成当前用户界面不响应。
- QProcess的问题
- QProcess 的中文路径问题
- 使用QProcess要注意的问题(QProcess::start: Process is already running)
- 关于QT的QProcess运行外部程序的问题
- QProcess的使用
- QProcess
- QProcess
- QProcess
- QProcess
- QT QProcess 重定向问题
- 解决QProcess对象调用execute执行cmd命令不支持中文和空格的问题
- qt调用外部程序的方法 qprocess
- qt进程间的通行 QProcess
- QProcess与外部程序的调用
- QProcess处理带管道的shell
- QProcess调用外部程序方式的差异
- QProcess与外部程序的调用
- Qt5 QProcess的使用和readAllStandardOutput()中文乱码的解决
- 自动布局之autoresizingMask
- java基础-面向对象(继承、多态)
- Java——反射机制实例
- SQL中的cast()函数介绍
- 一起做RGB-D SLAM (3)
- QProcess的问题
- 设置透明的导航栏
- Linux编程:获取文件大小
- 基于Netty5.0案例八服务端心跳包
- Maven生命周期详解
- 一起做RGB-D SLAM (4)
- web.xml配置详解
- JBoss7.1配置Oracle11g数据源,详细图解
- Redis KVStore 在阿里云环境下的性能报告及问题