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()的返回值问题相关推荐

  1. 修改服务器ip 需要重启,linux服务器设置ip后需要重启吗

    linux服务器设置ip后需要重启吗 内容精选 换一换 切换操作系统是为您的弹性云服务器重新切换一个系统盘.切换完成后弹性云服务器的系统盘ID会发生改变,并删除原有系统盘.如果弹性云服务器当前使用的操 ...

  2. linux上设置git高亮

    linux上设置git高亮  公司的测试环境没有配置cicd,每次只能自己去服务器上拉取代码,编译开发,吐槽一下,比较难用.而且我们的测试服务器的终端也是全黑的,很难用,前期项目开发比较紧张,没有时间 ...

  3. linux设置默认终端模拟器,ubuntu终端默认设置_在Ubuntu Linux上设置默认终端模拟器...

    ubuntu终端默认设置_在Ubuntu Linux上设置默认终端模拟器 ubuntu终端默认设置_在Ubuntu Linux上设置默认终端模拟器 ubuntu终端默认设置 Ubuntu has a ...

  4. window下编辑的python文件复制到linux上,运行后出现/usr/bin/python3^M

    window下编辑的python文件复制到linux上,运行后出现 /usr/bin/python3^M: bad interpreter: No such file or directory 1.使 ...

  5. 关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13...

    为什么80%的码农都做不了架构师?>>>    关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13 现有功能: 以前版本仅支持自己定义url,返回 ...

  6. oracle 设置 shmmax,安装ORACLE时在Linux上设置内核参数的含义

    前两天看到一篇Redhat官方的Oracle安装文档,对于Linux内核参数的修改描述的非常清晰. 安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其 ...

  7. mysql在linux上设置远程访问

    linux上的mysql开启远程访问 1.启动mysql服务 在mysql的bin目录下输入./mysqld_safe & 在后台开启mysql服务 登录mysql mysql -uroot ...

  8. torch各个版本镜像_如何解决在cuda上安装torch后torch.cuda.is_available()返回False

    课题组的服务器最近又炸了,不得已换一台稳定点的服务器,让师弟开了账号开始部署自己的代码环境.装了anaconda之后,开始安装用的最多的torch. 初安装:使用清华镜像下载安装torch.torch ...

  9. POI拆分单元格,并设置拆分后第一个cell的值为空cell的值

    // 从第A7开始,拆分单元格CellReference ref = new CellReference("A7");//遍历sheet中的所有的合并区域for (int i = ...

最新文章

  1. c语言windows程序设计 - 第十天,C语言Windows程序设计 - 第十天 - 响应键盘事件...
  2. cubase怎么添加midi设备_Cubase教程丨20分钟快速上手Cubase(下)
  3. pandas 中的函数—— .reset_index()
  4. malloc,colloc,realloc内存分配,动态库,静态库的生成与调用
  5. Pro Android学习笔记(二九):用户界面和控制(17):include和merge
  6. lintcode:最小编辑距离
  7. python 直方图每个bin中的值_【Python数据分析】四级成绩分布 -matplotlib,xlrd 应用...
  8. 627.Swap Salary-(LeetCode之Database篇)
  9. Oracle IMPDP
  10. Linux Shell脚本专栏_批量检测网站是否异常脚本_08
  11. 二分查找——A-B数对(洛谷 P1102)
  12. iOS 数组与字符串的相互转化
  13. React:工程化开发
  14. 移动安全初探:窃取微信聊天记录、Hacking Android with Metasploit
  15. MemoryBarrier方法
  16. 人生就是一场与自己的较量,社科院杜兰金融硕士项目引领你走得更远
  17. 各种蔬菜水果中英文名称对照
  18. 分享前端网站模板,HTML5的响应式设计模板
  19. 一种更简单的求最小平方均值函数(MSE)的方法 -- 梯度下降法。
  20. 学生党无线蓝牙耳机推荐哪个,2022口碑最好的蓝牙耳机推荐

热门文章

  1. AI玩俄罗斯方块(Python实现)
  2. 借助深度卷积神经网络对图片 GIF 视频进行超分辨率放大(即放大与降噪) 以及 对视频进行 插帧(即补帧).
  3. 关于人脸识别数据库的几点介绍
  4. ubuntu系统怎么安装ssh服务器配置,如何在Ubuntu 20.04 LTS上安装SSH服务器
  5. 微信支付android不弹出支付密码窗口,微信支付没弹出支付窗口
  6. python判断输入类型怎么做_如何检查输入类型?
  7. Mat矩阵基本操作与示例 OpenCV
  8. Udacity机器人软件工程师课程笔记(十九) - 3D感知介绍 - 主动/被动式传感器、RGB-D相机、点云
  9. linux ngxtop安装安装及使用
  10. vectorbool不是容器