linux下获取程序当前目录绝对路径

来源:互联网 发布:淘宝怎么代充话费 编辑:程序博客网 时间:2024/05/04 17:07

转自 http://www.360doc.com/content/14/0114/15/8314158_345221928.shtml

1、Shell版

1
2
#获取当前脚本所在绝对路径
cur_dir=$(cd"$(dirname "$0")";pwd)


2、C语言版

方法一:用realpath函数。这种方法用于开机启动程序获取自身目录会出错。

1
2
3
4
5
6
7
8
9
char current_absolute_path[MAX_SIZE];
//获取当前目录绝对路径
if (NULL == realpath("./", current_absolute_path))
{
    printf("***Error***\n");
    exit(-1);
}
strcat(current_absolute_path,"/");
printf("current absolute path:%s\n", current_absolute_path);

方法二:用getcwd函数。这种方法用于开机启动程序获取自身目录会出错。

1
2
3
4
5
6
7
8
char current_absolute_path[MAX_SIZE];
//获取当前目录绝对路径
if (NULL == getcwd(current_absolute_path, MAX_SIZE))
{
    printf("***Error***\n");
    exit(-1);
}
printf("current absolute path:%s\n", current_absolute_path);

方法三用readlink函数。这种方法最可靠,可用于开机启动程序获取自身目录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char current_absolute_path[MAX_SIZE];
//获取当前程序绝对路径
int cnt = readlink("/proc/self/exe", current_absolute_path, MAX_SIZE);
if (cnt < 0 || cnt >= MAX_SIZE)
{
    printf("***Error***\n");
    exit(-1);
}
//获取当前目录绝对路径,即去掉程序名
int i;
for(i = cnt; i >=0; --i)
{
    if(current_absolute_path[i] == '/')
    {
        current_absolute_path[i+1] ='\0';
        break;
    }
}
printf("current absolute path:%s\n", current_absolute_path);


*** walker ***


本文出自 “walker的流水账” 博客,请务必保留此出处http://walkerqt.blog.51cto.com/1310630/1029395

0 0
原创粉丝点击