转载来源http://walkerqt.blog.51cto.com/1310630/1029395
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);
|
|