【Qt】Linux上设置自启动后qApp->applicationDirPath()的返回值问题

187 篇文章 134 订阅 ¥69.90 ¥99.00
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(),然后截取出程序路径(这个方法没有测试)。


如果我的能力只能让我穷困潦倒,那穷困潦倒就是我的价值。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭老二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值