【Qt】Linux上设置自启动后qApp->applicationDirPath()的返回值问题
1、问题描述
开发程序过程中,使用qApp->applicationDirPath()返回程序所在目录,一直没问题。但是在设置自启动后,qApp->applicationDirPath()返回的目录不是程序所在目录。
2、原因分析
查看qApp->applicationDirPath()官方手册,发现针对Linux系统,有如下警示说明:
Warning: On Linux, this function will try to get the path from the /proc file system. If that fails, it assumes that argv[0] contains the absolute file name of the executable. The function also assumes that the current directory has not been changed by the application.
大意是:在Linux系统中,该函数尝试获取 /proc 中记录的路径;如果获取失败,在从argv[0]中获取绝对路径。这个函数假设程序没有更改当前目录。
对比查看 /proc/[PID]/cwd 链接的路径:开发时,启动程序在进入程序所在目录后启动,此时 /proc/[PID]/cwd 链接到程序所在目录;在设置为自启动后,启动脚本直接在root根目录下使用程序的绝对路径启动,此时 /proc/[PID]/cwd 链接的是root根目录。
3、解决方法
在设置启动脚本时,先 cd 到程序所在目录,然后再执行程序。
应该还有其它方法,比如获取程序绝对路径qApp->applicationFilePath(),然后截取出程序路径(这个方法没有测试)。
如果我的能力只能让我穷困潦倒,那穷困潦倒就是我的价值。
【Qt】Linux上设置自启动后qApp->applicationDirPath()的返回值问题相关推荐
- 修改服务器ip 需要重启,linux服务器设置ip后需要重启吗
linux服务器设置ip后需要重启吗 内容精选 换一换 切换操作系统是为您的弹性云服务器重新切换一个系统盘.切换完成后弹性云服务器的系统盘ID会发生改变,并删除原有系统盘.如果弹性云服务器当前使用的操 ...
- linux上设置git高亮
linux上设置git高亮 公司的测试环境没有配置cicd,每次只能自己去服务器上拉取代码,编译开发,吐槽一下,比较难用.而且我们的测试服务器的终端也是全黑的,很难用,前期项目开发比较紧张,没有时间 ...
- linux设置默认终端模拟器,ubuntu终端默认设置_在Ubuntu Linux上设置默认终端模拟器...
ubuntu终端默认设置_在Ubuntu Linux上设置默认终端模拟器 ubuntu终端默认设置_在Ubuntu Linux上设置默认终端模拟器 ubuntu终端默认设置 Ubuntu has a ...
- window下编辑的python文件复制到linux上,运行后出现/usr/bin/python3^M
window下编辑的python文件复制到linux上,运行后出现 /usr/bin/python3^M: bad interpreter: No such file or directory 1.使 ...
- 关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13...
为什么80%的码农都做不了架构师?>>> 关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13 现有功能: 以前版本仅支持自己定义url,返回 ...
- oracle 设置 shmmax,安装ORACLE时在Linux上设置内核参数的含义
前两天看到一篇Redhat官方的Oracle安装文档,对于Linux内核参数的修改描述的非常清晰. 安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其 ...
- mysql在linux上设置远程访问
linux上的mysql开启远程访问 1.启动mysql服务 在mysql的bin目录下输入./mysqld_safe & 在后台开启mysql服务 登录mysql mysql -uroot ...
- torch各个版本镜像_如何解决在cuda上安装torch后torch.cuda.is_available()返回False
课题组的服务器最近又炸了,不得已换一台稳定点的服务器,让师弟开了账号开始部署自己的代码环境.装了anaconda之后,开始安装用的最多的torch. 初安装:使用清华镜像下载安装torch.torch ...
- POI拆分单元格,并设置拆分后第一个cell的值为空cell的值
// 从第A7开始,拆分单元格CellReference ref = new CellReference("A7");//遍历sheet中的所有的合并区域for (int i = ...
最新文章
- c语言windows程序设计 - 第十天,C语言Windows程序设计 - 第十天 - 响应键盘事件...
- cubase怎么添加midi设备_Cubase教程丨20分钟快速上手Cubase(下)
- pandas 中的函数—— .reset_index()
- malloc,colloc,realloc内存分配,动态库,静态库的生成与调用
- Pro Android学习笔记(二九):用户界面和控制(17):include和merge
- lintcode:最小编辑距离
- python 直方图每个bin中的值_【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用...
- 627.Swap Salary-(LeetCode之Database篇)
- Oracle IMPDP
- Linux Shell脚本专栏_批量检测网站是否异常脚本_08
- 二分查找——A-B数对(洛谷 P1102)
- iOS 数组与字符串的相互转化
- React:工程化开发
- 移动安全初探:窃取微信聊天记录、Hacking Android with Metasploit
- MemoryBarrier方法
- 人生就是一场与自己的较量,社科院杜兰金融硕士项目引领你走得更远
- 各种蔬菜水果中英文名称对照
- 分享前端网站模板,HTML5的响应式设计模板
- 一种更简单的求最小平方均值函数(MSE)的方法 -- 梯度下降法。
- 学生党无线蓝牙耳机推荐哪个,2022口碑最好的蓝牙耳机推荐
热门文章
- AI玩俄罗斯方块(Python实现)
- 借助深度卷积神经网络对图片 GIF 视频进行超分辨率放大(即放大与降噪) 以及 对视频进行 插帧(即补帧).
- 关于人脸识别数据库的几点介绍
- ubuntu系统怎么安装ssh服务器配置,如何在Ubuntu 20.04 LTS上安装SSH服务器
- 微信支付android不弹出支付密码窗口,微信支付没弹出支付窗口
- python判断输入类型怎么做_如何检查输入类型?
- Mat矩阵基本操作与示例 OpenCV
- Udacity机器人软件工程师课程笔记(十九) - 3D感知介绍 - 主动/被动式传感器、RGB-D相机、点云
- linux ngxtop安装安装及使用
- vectorbool不是容器