Qt开发 — QProcess执行带管道的shell命令

2023-10-27

Qt开发 — QProcess执行带管道的shell命令

简述在嵌入式开发过程中,很容易遇到一些需要开辟新的进程,而新的进程里面又需要强制关闭父进程的操作。不如程序中需要读写SD卡,但是有时程序中又需要格式化SD卡。这就遇到问题,需要在SD卡格式化的进程中,关闭程序以便操作SD卡,否则SD卡被占用无法完成格式化。

方法一
编写QT 程序,在程序内部首先kill 操作SD卡的程序,然后在进行SD卡操作。
方法二:
通过编写shell脚本来实现kill程序 和SD卡格式化

但是如何实现,在程序内启动所编写的 格式化SD卡的程序呢?

在QT中提供了QProcess 供我们使用来启动一个程序、脚本或者指令
注意

QProcess::startDetached(); // 以分离进程的方式启动 没有子父进程关系
QProcess::start(); // 父死 子亡

因此,我们选用分离进程的方式启动最合理

启动脚本程序
QProcess::startDetached("./home/parallels/Documents/beep.sh"); 
// 或
QProcess::startDetached("/bin/bash",QStringList()<<"./beep.sh","/home/parallels/Documents/");
// 没有 /bin/bash时使用 /bin/sh 
QProcess::startDetached("/bin/sh",QStringList()<<"./beep.sh","/home/parallels/Documents/");
启动程序
QProcess::startDetached("/home/parallels/Documents/Beep.exe"); 
启动脚本指令
// killall app
	QString cmd = "/bin/sh -c \"killall -9 TEST;";
	cmd += "umount /dev/mmcblk0p1;mkfs.fat /dev/mmcblk0p1;\"";
	QProcess::startDetached(cmd);

注意指令的执行

/bin/sh -c "killall -9 TEST;umount /dev/mmcblk0p1;mkfs.fat /dev/mmcblk0p1;"
//或者
/bin/bash -c "killall -9 TEST;umount /dev/mmcblk0p1;mkfs.fat /dev/mmcblk0p1;"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt开发 — QProcess执行带管道的shell命令 的相关文章

  • QT QProcess: Destroyed while process (“apple.exe“) is still running

    一 出错原因 因为我这个程序是一直运行的 xff0c 它会一直回显数据 xff0c 如果你使用对象 xff0c start启动这个命令后 xff0c 程序认为QProcess已经执行完毕 xff0c 自动回收 xff0c 但是此时程序正在执
  • Windows下令QProcess弹出CMD界面

    研究了快一下午 xff0c 来回看了QProcess文档中 xff0c 关于start execute statedDetached相关接口的调用说明 xff0c 然而并没有什么用处 差点就准备调用CreateProcess API的接口
  • Qt开发 — QProcess执行带管道的shell命令

    Qt开发 QProcess执行带管道的shell命令 简述 在嵌入式开发过程中 很容易遇到一些需要开辟新的进程 而新的进程里面又需要强制关闭父进程的操作 不如程序中需要读写SD卡 但是有时程序中又需要格式化SD卡 这就遇到问题 需要在SD卡
  • Qt通过QProcess启动进程并传递命令行参数

    目录 QProcess 启动外部程序的两种方式 依赖式 分离式 启动进程前的预处理 设置启动路径 设置启动命令参数 启动的状态 更多说明 Public Functions Signals 设计一个拉起进程的程序 基本设计思路 效果图 核心代
  • 终止正在 Q​​Thread 内运行的正在进行的 QProcess? [复制]

    这个问题在这里已经有答案了 如何终止正在 Q Thread 内运行并被另一个 QThread 删除的正在进行的 QProcess 我什至插入了一个 QMutex extCmdProcessLock 这应该避免在 extCmdProcess
  • 在文本浏览器中实时显示 QProcess 输出

    我是 qt 开发的新手 我想将 QProcess 的输出实时传输到文本浏览器 我首先执行一个简单的 echo 命令 但程序的输出没有显示 我究竟做错了什么 QProcess p p start echo hye QByteArray byt
  • 尝试让 QProcess 使用队列

    我正在尝试使用队列运行多个进程 并使用以下命令获取所有进程的输出QProcess但我有几个问题 我正在使用一个QSpinBox设置同时运行的最大进程数 我可以让主线程中的一切正常工作 或者如果我使用进程中的进程运行循环QObject但我无法
  • 如何从 QProcess 获取 STDOUT?

    我想我将使用以下代码从 QProcess 获取输出 Start the process process start tr php cgi www test php QIODevice ReadWrite Wait for it to sta
  • Pyside:多个 QProcess 输出到 TextEdit

    我有一个调用可执行文件的 pyside 应用程序 我想在 n 个进程中异步运行这个可执行文件 并在 QTextEdit 中捕获每个进程的输出 目前我有 def run self args worklist self viewer Outpu
  • 当 QProcess 需要用户输入 Qt 时如何读取

    我使用 Qt 来实现一个允许开发嵌入式系统的接口 我面临一个问题 为了将程序闪存到嵌入式系统中 我使用 QProcess 以便使用命令 make 和 make flash 保证没有任何问题 程序编译成功 但是当我尝试对 make flash
  • 将 lambda 函数连接到 QProcess::error 时出错

    在下面的代码中 我想将 lambda 函数连接到 QProcess error 信号 void Updater start QProcess process QObject connect process QProcess error QP
  • Qprocess 搞乱了我的 linux 命令(我认为)。怎么修? [复制]

    这个问题在这里已经有答案了 我需要强制我的 C QT4 应用程序从 Linux 命令读取结果 我正在尝试使用 Qpr ocess 但是一旦我的命令变得复杂 它就会以某种方式变得混乱 只是猜测 并且不起作用 这里我试着给大家举一个小例子 QP
  • 如何在 Qt 中获取输出 system() 命令?

    我在 Qt 中使用 system 命令 我想获得输出并将其显示给用户 我的命令是 system echo rootPass toAscii su root c yum y install packageName toAscii 当我在 QP
  • 如何在 PyQt5 中对 QProcess 进行排队?

    我想在 PyQt5 中对 QProcess 进行排队 或者只是阻塞 同时仍然使用 readAll 读取标准输出 相当于 subprocess call 而不是 subprocess Pop 当使用 waitForFinished 时 带有
  • Qt:QProcess调用终端+脚本

    我在使用 QProcess 时遇到了真正的麻烦 我已经查看了几个使用它的位置 但每次使用它时我的程序都会冻结 或者它只是不执行我想要它执行的操作 我想从 GUI 应用程序执行以下操作 将目录更改为 Users Tim etc 等 从那里我需
  • QProcess未知错误

    我遇到了奇怪的问题 QProcess 只是不工作 并且错误未知 我在标头中有全局变量 QProcess importModule 我得到了这个功能 我尝试了start and startDetached顺便说一句方法 void App op
  • 在 MacOS 终端上运行 ffmpeg [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 MacOS 相当陌生 我发现使用终端来获取信息并不容易ffmpeg和我在 Window 上一样正常运行 我有 ffmpeg 二进制文件ffmpe
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • Qt - 等待 Qprocess 完成

    我正在使用 CMDQProcess但我有一个问题 My code QProcess process process start cmd exe process write del f b txt n r process waitForFin

随机推荐

  • Nginx的alias/root/try_files实战

    项目背景 前端Vue项目 同时支撑PC网站 手机M站和手机App 在项目构建之后会有三个子目录作为路由分别对应m站 PC和APP 但是该项目作为一个服务对外提供服务需要一个统一的请求入口 比如 location xx root data w
  • cisco 3640 voip配置实例解析

    下面是一个Cisco 3640的VOIP配置 对方的结构是台北和上海两地做VOIP 后接阿尔卡特的PBX 这是我亲手做的 里面有很多有注意的地方 与大家一起分享快乐 如有看不懂的地方请问我 还有我加的注解 Taipei sh run Bui
  • Android_切换主题或皮肤的实现方式

    1 简介 使用自定义主题或者皮肤 可以将相关配置 颜色 大小等等 放在一个新的apk压缩文件中 目录结构保持一致 该apk文件放在任意可以访问到的目录即可 类似 system framework framework res apk 可根据软
  • Linux:haproxy部署--搭建nginx集群

    Haproxy介绍 Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一 它支持双机热备 虚拟主机 基于TCP和HTTP应用代理等功能 其配置简单 而且拥有很好的对服务器节点的健康检查功能 相当于keepalived健康检
  • 编写一求两个数的最大值的函数Max,要求用模板实现对任意数据类型数据都可应用该函数求取结果

    编写一求两个数的最大值的函数Max 要求用模板实现对任意数据类型数据都可应用该函数求取结果 在main 函数中分别用整型 实型 字符型数据进行测试 include
  • 打开用友软件提示 SQL Server口令怎么办?(含多种版本SQL Server数据库的安装方法)

    转自 http www ufidawhy com jcufida SQLServerkl html 用友财务软件提示 SQL Server口令怎么办 具体提示如下 由于SQL Server的超级用户口令修改过 用友网络财务软件不能连接到SQ
  • 清除Tomcat日志

    清除Tomcat日志 Tomcat日志清理日常必不可少 这里记录一下平时使用命令 0 查日志文件占空间大小 cd wltiot tomcat apache tomcat 7 0 99 logs ll ah 1 清除catalina out文
  • chrome控制台修改JS的变量值

    最近突然闲着没事想起来之前一个前端比较好玩的东西 然后记录一下 注注注 我是专业后台搬砖工 这是修改前的 所有流程都是正常走的 if里的也没有打印出来 然后 我们改改 坏笑 先进控制台在判断那块打出断点 然后找到右边的Global 所有的变
  • Ubuntu22.04安装CUDA和cuDNN详细过程记录

    文章目录 一 安装显卡驱动 二 安装CUDA 三 安装cuDNN 四 更换cuDNN版本 参考资料 一 安装显卡驱动 1 终端中输入以下命令获取显卡和驱动信息 ubuntu drivers devices 以我自己的机器为例 显示结果如下
  • C++杂谈 为什么类的空指针对象可以访问类某些的成员函数

    class TestObject public TestObject std cout lt lt TestObject lt lt std endl TestObject std cout lt lt TestObject lt lt s
  • 华为HCIE云计算之FC添加ipsan数据存储

    华为HCIE云计算之FC添加ipsan数据存储 一 登录华为OceanStor仿真器 二 在数据存储创建LUN 1 创建硬盘域 2 创建存储池 3 创建LUN和LUN组 4 创建主机和主机组 5 创建映射关系 三 配置数据存储的端口IP 1
  • opencv进阶19-基于opencv 决策树cv::ml::DTrees 实现demo示例

    opencv 中创建决策树 cv ml DTrees类表示单个决策树或决策树集合 它是RTrees和 Boost的基类 CART是二叉树 可用于分类或回归 对于分类 每个叶子节点都 标有类标签 多个叶子节点可能具有相同的标签 对于回归 每个
  • GPT-4 最强竞争对手,Claude 杀疯了!

    这是 进击的Coder 的第 851 篇技术分享 作者 小 G 来源 GitHubDaily 阅读本文大概需要 6 分钟 在今年早些时候 ChatGPT Bard Claude 等大语言模型 在 AI 领域呈三权鼎立之势 无人能出其右 被视
  • 如何解析hdlc帧7E头(帧格式分析实例)

    0 前言 作为一名嵌入式工程师 经常需要通过UART与外设打交道 而对于串行总线来说 往往我们必须要进行帧同步 通常的做法是把信令包含在2个0x7E的中间 除此之外还有HDLC PPP等协议也会到有此应用场景 那么如何从这些数据帧中提取有效
  • pip3 config 更新源问题

    pip源配置文件可以放置的位置 Linux Unix etc pip con pip pip conf 每一个我都找了都没有 所以我是在这个文件夹中创建的pip conf文件 config pip pip conf Mac OSX Libr
  • mybatis插入数据的时候获取自增的id

    1 自增的是int类型
  • 数据挖掘实验(八):DBSCAN聚类 R语言

    一 实验目的 了解DBSCAN算法基本原理 编写代码并实现DBSCAN算法对数据的聚簇 二 实验步骤 采用的数据集 R语言factoextra包里的multishapes数据集 函数首先确定两个参数 1 epsilon 在一个点周围邻近区域
  • 在sql查询中使用表变量实现上一条下一条记录

    SET ANSI NULLS ON GO SET QUOTED IDENTIFIER ON GO Author
  • 1046 划拳

    划拳是古老中国酒文化的一个有趣的组成部分 酒桌上两人划拳的方法为 每人口中喊出一个数字 同时用手比划出一个数字 如果谁比划出的数字正好等于两人喊出的数字之和 谁就赢了 输家罚一杯酒 两人同赢或两人同输则继续下一轮 直到唯一的赢家出现 下面给
  • Qt开发 — QProcess执行带管道的shell命令

    Qt开发 QProcess执行带管道的shell命令 简述 在嵌入式开发过程中 很容易遇到一些需要开辟新的进程 而新的进程里面又需要强制关闭父进程的操作 不如程序中需要读写SD卡 但是有时程序中又需要格式化SD卡 这就遇到问题 需要在SD卡