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

【QT 5 调试软件+Linux下调用脚本shell-无法调度+目录拼写+无法找目录+sudo权限(2)+问题解决方式+后续补充】

【QT 5 调试软件+Linux下调用脚本shell-无法调度+目录拼写+无法找目录+sudo权限(2)+问题解决方式+后续补充】

  • 1、前言
  • 2、问题综述:自研qt上位机无法调度脚本
    • (1)可能原因1:无法找到目录
      • 情况说明:
      • 解决思路:
    • (2)可能原因2:目录名拼写错误
      • 情况说明:
      • 解决思路:
    • (3)可能原因3:带有sudo权限解决方式
      • 情况说明:
      • 解决思路:
    • (4)可能原因4:中文路径 & 双桌面路径
      • 情况说明:
  • 3、其他补充
    • (1)给目标文件可执行权限
    • (2)win下,缺少dll文件问题
  • 4、总结

1、前言

在Linux下,当我们调用脚本文件的时候,会经常遇到无法调度情况,因为是我们自己使用qt编写的代码调度,可能相关错误防范机制并不完全,明明之前可以调度到了脚本,换个机子或者其他情况就不行了,本篇做个几个总结。

2、问题综述:自研qt上位机无法调度脚本

我们用前一篇作为样例,如下,我们做了一个简单样例,

【QT 5 调试软件+Linux下调用脚本shell-经验总结+初步调试+基础样例】

来调度Linux桌面下的一个脚本。

这只是一个简单样例,但是我们实际使用更为复杂,可能有以下几种情况,我们来一一来说明。

(1)可能原因1:无法找到目录

情况说明:

常见第一种情况,就是无法找到目录,也就是目标脚本所在目录,其实也分两种情况:

  • 第一种是我只有一个软件,那么当你开启软件时,软件所在目录,就是一个被软件识别到了目录。

  • 第二种情况时,我存在多个软件,比如一个软件调用另一个软件,这是需要注意的是,目录其实是以第一个软件为当前目录,如果第二个被调用的软件在获取当前目录,可能获取的是第一个目录的,而不是的第二个软件所在目录。

解决思路:

  • 第一种解决思路就是,使用绝对路径,虽然有些笨,但是可以使用检测绝对路径存不存的方式,来确保自己调用软件没有问题,都是写死的目录,直接调用也比较方便,就是不灵活。
  • 第二种解决思路就是,使用灵活目录,每次软件从哪里打开,然后去找相关关联方式的目录,这样虽然比较灵活,但是跳来跳去容易把自己绕蒙。

在代码上,qt有很多相关库,可以帮助我们找到当前目录,直接获取。
如下是获取Linux home和用户名的目录,你可以在后面加入自己想要目录
或者
当然你也可以获取到桌面上

ps:需要引入库
QString path = QDir::homePath()+"/xxx";
QString path = QDir::homePath()+"/Desktop/xxx";

另外还有通过文件相关功能函数,找到自己目标的目录文件。
或则
直接获取自己软件当前目录,将需要的文件,放在同一个软件目录下,也是一种方式。

QString path =QDir::currentPath()+"/xxx";

(2)可能原因2:目录名拼写错误

情况说明:

自己在实际操作过程中,也比较容易出现拼写错误的情况,尤其是Linux下,频繁使用终端敲写,非常容易多个字母,少个字母,字母敲错了,董事有个可能,这个时候,软件可能就没有反馈,或者没有任何反应。

解决思路:

虽然说程序员不建议使用 == ctrl + C 和 ctrl + V==,但是在这样情况下,建议还是使用,目录短还好说,长了真的很难不错,所有目录名的地方,先用pwd获取目标目录,然后直接复制。

pwd

(3)可能原因3:带有sudo权限解决方式

情况说明:

另外如果经常使用qt的同学,可能就会遇到,我们平时在终端也是敲写命令时,会带有 sudo命令情况。

sudo xxx

但是qt软件本身一般运行中,调用sudo其实是不合理的,为此,调用某个脚本,脚本需要sudo权限如何做呢

解决思路:

这个时候,其中一种思路,是在以下文件加入一段命令,让运行的脚本免除使用sudo,直接可以调度。

sudo visudo

如下,大致是这样的一个文件,在这里填写对于脚本,让其免除sudo
在这里插入图片描述
具体内容如下,其中“xxx”前面部分填写字节用户名,后面是具体目录位置的文件

xxx  ALL=(ALL) NOPASSWD: /opt/xxx.sh

注意点,一定要填写在最后~~!
注意点,一定要填写在最后~~!
注意点,一定要填写在最后~~!

因为在实际过程中,发现有次写在中间了,结果,qt就是调不动脚本。

(4)可能原因4:中文路径 & 双桌面路径

情况说明:

在实际应用过程中,发现自己编写的软件始终无法找到脚本,这种有时候可能也是因为中文路径或者双桌面路径,即一种是 如下路径

~/Desktop/xxx/...

另一种是

~/桌面/xxx/...

的路径,注意区别了么,桌面是“中文”,Linux是不会像win下自动转换的,就是中文的桌面,这样软件也是找不到,并且以上两个都同时存在,很容易让人搞混

3、其他补充

(1)给目标文件可执行权限

在适应运用过程中,也遇到qt无法调度脚本情况,需要给目标文件运行权限一般是在对应目录下如输入如下内容,直接给目标目录内所有文件全部777权限。

sudo chmod 777 -R *

(2)win下,缺少dll文件问题

在win环境下,经常出现的不是找不到目录,而是在使用qt的时候,报缺少dll文件。

一般解决思路,就是用因特尔提供的工具,更新下库。
具体请参考:
【qt5生成软件-can卡-上位机-无法加载ControlCAN.dll&错误代码(0xc0150002)等相关问题-WIN11系统-尝试解决】

4、总结

问题简单整理

相关文章:

【QT 5 调试软件+Linux下调用脚本shell-无法调度+目录拼写+无法找目录+sudo权限(2)+问题解决方式+后续补充】

【QT 5 调试软件Linux下调用脚本shell-无法调度目录拼写无法找目录sudo权限(2)问题解决方式后续补充】 1、前言2、问题综述:自研qt上位机无法调度脚本(1)可能原因1:无法找到目录情况说明:解决思…...

企业防泄密妙招有哪些?请记住这8招!超实用,学起来!

在古代,有云:“密者,德之高也;事以密成,语以泄败。” 这些谚语不仅是对忠诚守密的高度赞扬,更是对保密工作重要性的深刻阐述。 在现代企业中,数据泄露已成为不容忽视的严峻挑战。 如何有效防止…...

pytorch千问模型源码分析

# 规范化技术,旨在替代传统的 Layer Normalization(LN) # 核心思想是对输入张量的每个样本的每个特征进行规范化,使其均值为 0,方差为 1 class Qwen2RMSNorm(nn.Module): def __init__(self, hidden_size, eps1e-6…...

滚雪球学SpringCloud[1.3]:SpringCloud环境搭建

全文目录: 前言1.3.1 环境要求1. JDK2. Maven3. IDE4. 其他工具 1.3.2 初始化Spring Boot项目方法一:使用Spring Initializr方法二:使用IDE项目结构 1.3.3 引入Spring Cloud依赖1. 更新pom.xml2. 添加Spring Cloud Starter依赖3. 示例完整的p…...

9.28今日错题解析(软考)

目录 前言面向对象技术——UML软件工程——软件能力成熟度模型(CMM)程序设计语言——编译 前言 这是用来记录我备考软考设计师的错题的,今天知识点为UML、软件能力成熟度模型(CMM)和编译,大部分错题摘自希…...

【Vue】以RuoYi框架前端为例,ElementUI封装图片上传组件——将图片信息转成base64后提交到后端保存

RuoYi 框架本身对于图片上传功能&#xff0c;在ElementUI的 <el-upload> 组件的基础装封装了 /components/ImageUpload/index.vue 组件。本组件就是在 RuoYi 自定义的 <ImageUpload> 组件的基础上进行改造&#xff0c;将图片的信息在上传之前处理成 base64 格式&am…...

【Linux】驱动的基本架构和编译

驱动源码 /** Silicon Integrated Co., Ltd haptic sih688x haptic driver file** Copyright (c) 2021 kugua <daokuan.zhusi-in.com>** This program is free software; you can redistribute it and/or modify it* under the terms of the GNU General Public Licen…...

1013. 将数组分成和相等的三个部分 数组切分

1013. 将数组分成和相等的三个部分 已解答 简单 相关标签 相关企业 提示 给你一个整数数组 arr&#xff0c;只有可以将其划分为三个和相等的 非空 部分时才返回 true&#xff0c;否则返回 false。 形式上&#xff0c;如果可以找出索引 i 1 < j 且满足 (arr[0] arr[…...

【深度学习】—— 自动微分、非标量变量的反向传播、 分离计算、 Python控制流的梯度计算

【深度学习】—— 自动微分 自动微分一个简单的例子 非标量变量的反向传播分离计算Python控制流的梯度计算 自动微分 求导是⼏乎所有深度学习优化算法的关键步骤。虽然求导的计算很简单&#xff0c;只需要⼀些基本的微积分。但对于复杂的模型&#xff0c;⼿⼯进⾏更新是⼀件很…...

Java项目实战II基于Java+Spring Boot+MySQL的大学城水电管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者 一、前言 随着大学城规模的不断扩大和学生数量的急剧增加&#xff0c;大学城内的水电管理面临着前所未有的挑战…...

Vue 组件的三大组成部分详解

文章目录 模板&#xff08;template&#xff09;脚本&#xff08;script&#xff09;样式&#xff08;style&#xff09;总结 在 Vue.js 中&#xff0c;组件是构建用户界面的重要基石。一个 Vue 组件通常由三个主要部分组成&#xff1a;模板&#xff08;template&#xff09;、…...

深入理解Java内部类

一、什么是内部类 内部类是定义在另一个类内部的类。内部类与外部类&#xff08;Enclosing Class&#xff09;之间存在着紧密的联系&#xff0c;可以访问外部类的成员变量和方法&#xff0c;这使得它们在某些场景下非常有用。 1.1 内部类的分类 Java中的内部类主要有以下几种…...

fiddler抓包12_篡改请求(请求前断点)

课程大纲 原理 正常“客户端-服务器”通信&#xff0c;即发送请求&#xff0c;接收返回。 Fiddler抓包是「客户端-浏览器」进行交互时&#xff0c;请求和响应都会从Fiddler通过&#xff0c;Fiddler可以捕获并展示。 请求前断点&#xff08;BreakPoint Before Request&#xff0…...

Webpack和GuIp打包原理以及不同

Webpack打包原理 Webpack的打包原理主要基于模块化的概念&#xff0c;它将应用程序中的所有资源&#xff08;如JS、CSS、图片等&#xff09;视为模块&#xff0c;并根据模块间的依赖关系进行静态分析。Webpack会递归地构建一个依赖关系图&#xff08;dependency graph&#xf…...

c++与Python用笛卡尔的心形函数输出爱心

我突然想到输出爱心是否可以用笛卡尔的心形函数 在IDLE里用Python输出下面这个图形 在小熊猫c里用c输出下面这个图形 如果当你要输出这些的时候会怎么办 低级:纯输出 print( ********* ********* ***************** ***************** …...

Mybatis 9种动态 sql 标签使用

MyBatis提供了9种动态SQL标签&#xff1a;trim、where、set、foreach、if、choose、when、otherwise、bind&#xff1b; 1.if 标签 <select id"getUser">select * from User<where><if test" age ! null ">and age > #{age}</if…...

OpenHarmony(鸿蒙南向)——平台驱动开发【PIN】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 PIN即管脚控制器&#xff0c;用于统一管理各SoC的…...

南平自闭症寄宿制学校:让孩子自信绽放

在繁华与喧嚣交织的都市之中&#xff0c;有一片静谧而充满希望的土地——广州星贝育园自闭症儿童寄宿制学校&#xff0c;这里不仅是知识的殿堂&#xff0c;更是自闭症儿童心灵成长的温馨家园。星贝育园&#xff0c;以其独特的教育理念与细致入微的关怀&#xff0c;为这些特殊的…...

汽车总线之---- LIN总线

Introduction LIN总线的简介&#xff0c;对于传统的这种点对点的连接方式&#xff0c;我们可以看到ECU相关的传感器和执行器是直接连接到ECU的&#xff0c;当传感器和执行器的数量较少时&#xff0c;这样的连接方式是能满足要求的&#xff0c;但是随着汽车电控功能数量的不断增…...

Android开发MPAndroidChart两条折线图

Android开发MPAndroidChart两条折线图 Android开发两条折线图效果&#xff0c;还是有一定难度的&#xff0c;难点它的起点不是坐标0的开始&#xff0c;还有数值上有背景图 一、思路&#xff1a; 用的是MPAndroidChart的BarChart 二、效果图&#xff1a; 三、关键代码&#…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...