转载来源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); |
联系客服