简述
使用Qt在linux下获取自己程序的运行绝对路径有多种方式,这里简单介绍两种方式
- 调用Qt类QCoreApplication
- 获取程序Pid访问Proc目录获取
方法一:
通过QCoreApplication::applicationFilePath();
(静态函数)获取程序路径.
QCoreApplication还可获取Dir路径AppName等,可SetAppName等功能
方法二:
近期在Linux下进行制作Qt程序打包成单个可执行程序,使用了Appimagetool工具进行打包后想要获取程序的运行绝对路径,通过调用QCoreApplication::applicationFilePath()发现打印出来的路径和程序所在路径并不相符,程序运行后临时产生的路径,不知为何会打印出以下路径只能通过其他方式来获取。
ps -ef | grep name 可以查看程序的运行路径这个尤为准确!
以下代码获取Pid后获取程序绝对路径
// /proc目录可获取系统的信息,比如进程,
//启动进程后会在proc里生成Pid名称的文件夹在此文件夹中的cmdline文件包含绝对路径此文件权限为444放心食用!
QString path = "/proc/" + QString::number(QCoreApplication::applicationPid()) + "/cmdline";
QFile f(path);
QString appPath;
if (f.open(QIODevice::ReadOnly)) {
appPath = f.readAll();
}
方法很多还需自行发掘.
新手上路,有不足或者有错误的地方还需大佬指教。
感谢阅读。