在Linux下获得程序运行的绝对路径

我们要在linux下使用C语言获得当前程序路径的话,需要使用到readlink函数,这个函数在头文件unistd.h当中定义,使用的时候记得一定要引用哦。

原理很简单,因为linux系统中有个符号链接:/proc/self/exe 它代表当前程序,所以我们使用函数readlink就能读取到当前程序运行时的绝对路径了。

readlink函数有三个参数,第一个为路径,第二个为保存信息的char buffer,第三个为buffer的长度,他的返回值是不包含字符串结尾(\0)的长度。

#include <unistd.h>

char *getOwnerPath()
{
    char path[1024];
    int cnt = readlink("/proc/self/exe",path,1024);
    if(cnt<0||cnt>=1024)
    {
        return NULL;
    }

    for(int i=cnt;i>=0;--i)
    {
        if(path[i]=='/')
        {
            path[i+1]='\0';
            break;
        }
    }
    
    return path;
}