Linux下获取程序绝对路径(全路径)的方法

来源:互联网 发布:好用的编程工具 编辑:程序博客网 时间:2024/05/18 02:03

Linux下获取程序绝对路径(全路径)的方法

直接上源代码:

#include <stdio.h>#include <unistd.h>#define MAXL_PATH 1024/*** NAME: getAbsopath* DESC: 获取程序的绝对路径* REMK: Absopath - Absolute path*/char* getAbsopath(){    static char buf[MAXL_PATH];int i;    int len = readlink("/proc/self/exe", buf, MAXL_PATH);    if (len < 0 || len >= MAXL_PATH)    {        return NULL;    }    buf[len] = '\0';    for (i = len; i >= 0; i--)    {        if (buf[i] == '/')        {            buf[i + 1] = '\0';            break;        }    }    return buf;}int main(int argc, char** argv){    printf("%s\n", getAbsopath());    return 0;}


改进的做法:

#include <stdio.h>#include <unistd.h>/*** NAME: getAbsopath* DESC: 获取程序的绝对路径* REMK: Absopath - Absolute path*/char* getAbsopath(char* buf, const int size){    int i;    int len = readlink("/proc/self/exe", buf, size - 1);    if (len < 0 || (len >= size - 1))    {        return NULL;    }    buf[len] = '\0';    for (i = len; i >= 0; i--)    {        if (buf[i] == '/')        {            buf[i + 1] = '\0';            break;        }    }    return buf;}int main(int argc, char** argv){    char path[1024];    printf("%s\n", getAbsopath(path, 1024));    return 0;}



0 0
原创粉丝点击