电脑网站你懂我意思正能量,php网站开发进程状态,网站开发过程记录,新葡京网址网站建设【QT 5 调试软件Linux下调用脚本shell-无法调度目录拼写无法找目录sudo权限#xff08;2#xff09;问题解决方式后续补充】 1、前言2、问题综述#xff1a;自研qt上位机无法调度脚本#xff08;1#xff09;可能原因1#xff1a;无法找到目录情况说明#xff1a;解决思… 【QT 5 调试软件Linux下调用脚本shell-无法调度目录拼写无法找目录sudo权限2问题解决方式后续补充】 1、前言2、问题综述自研qt上位机无法调度脚本1可能原因1无法找到目录情况说明解决思路 2可能原因2目录名拼写错误情况说明解决思路 3可能原因3带有sudo权限解决方式情况说明解决思路 4可能原因4中文路径 双桌面路径情况说明 3、其他补充1给目标文件可执行权限2win下缺少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获取目标目录然后直接复制。
pwd3可能原因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 *2win下缺少dll文件问题
在win环境下经常出现的不是找不到目录而是在使用qt的时候报缺少dll文件。
一般解决思路就是用因特尔提供的工具更新下库。 具体请参考 【qt5生成软件-can卡-上位机-无法加载ControlCAN.dll错误代码(0xc0150002)等相关问题-WIN11系统-尝试解决】
4、总结
问题简单整理