Linux下获取当前程序的绝对路径

简介: Linux下获取当前程序的绝对路径

Linux下获取当前程序的绝对路径


在Linux开发应用时,我们常常需要在程序中获取当前程序绝对路径,我们可以通过readlink读取符号链接/proc/self/exe进行获取,这个符号链接代表当前程序,它的源路径就是当前程序的绝对路径,比如我们在终端下键入命令:


[yangye@localhost ~]$ ls -ld /proc/self/exe
lrwxrwxrwx 1 yangye yangye 0 2月  18 16:05 /proc/self/exe -> /usr/bin/ls

可以看到/proc/self/exe指向ls命令的绝对路径。


ok,清楚原理后接下就是完整代码:


#include <string>
#include <limits.h>
#include <sys/types.h>
string getExePath()
{
  char result[PATH_MAX];
  ssize_t count = readlink( "/proc/self/exe", result, PATH_MAX );
  string exePath = string( result, (count > 0) ? count : 0 );
  size_t pos = exePath.find_last_of("\\/");
  return (string::npos == pos)
           ? ""
           : exePath.substr(0, pos);
}


上面代码中最终返回的是程序所在目录,如果需要程序绝对路径时直接返回exePath即可不用再做字符串分割。


分类: C/C++

相关文章
|
7天前
|
存储 移动开发 Linux
Linux系统之部署h5ai目录列表程序
【5月更文挑战第3天】Linux系统之部署h5ai目录列表程序
21 1
|
20天前
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
59 0
|
3天前
|
存储 Linux 编译器
【Linux】详解动态库链接和加载&&对可执行程序底层的理解
【Linux】详解动态库链接和加载&&对可执行程序底层的理解
|
3天前
|
Linux C++
【Linux】详解进程程序替换
【Linux】详解进程程序替换
|
5天前
|
网络协议 Java Linux
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
12 0
|
5天前
|
存储 网络协议 算法
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
【探索Linux】P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
11 0
|
19天前
|
Java Shell Linux
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
【linux进程控制(三)】进程程序替换--如何自己实现一个bash解释器?
|
19天前
|
安全 Linux 编译器
【linux进程(七)】程序地址空间深度剖析
【linux进程(七)】程序地址空间深度剖析
|
19天前
|
Shell Linux 程序员
【linux进程(六)】环境变量再理解&程序地址空间初认识
【linux进程(六)】环境变量再理解&程序地址空间初认识