当前位置: 技术问答>linux和unix
如何获取当前程序的全路径?
来源: 互联网 发布时间:2015-10-06
本文导语: getcwd()是获取工作路径,不可靠的 望指教!!! | getcwd就是获得当前程序的完整路径,为什么不可靠? | /proc/pid/ | #include #include #ifndef PATH_MAX #define PATH_MAX 1024 #endif...
getcwd()是获取工作路径,不可靠的
望指教!!!
望指教!!!
|
getcwd就是获得当前程序的完整路径,为什么不可靠?
|
/proc/pid/
|
#include
#include
#ifndef PATH_MAX
#define PATH_MAX 1024
#endif
char * get_exe_name() {
static char buf[PATH_MAX];
int rslt = readlink("/proc/self/exe", buf, PATH_MAX);
if ( rslt = PATH_MAX ) {
return NULL;
}
buf[rslt] = '';
return buf;
}
int main( void ) {
char * exe_name = get_exe_name();
puts( exe_name );
return 0;
}
这个是需要proc文件系统的支持的,没有安装proc文件系统的OS是不能够用的。
#include
#ifndef PATH_MAX
#define PATH_MAX 1024
#endif
char * get_exe_name() {
static char buf[PATH_MAX];
int rslt = readlink("/proc/self/exe", buf, PATH_MAX);
if ( rslt = PATH_MAX ) {
return NULL;
}
buf[rslt] = '';
return buf;
}
int main( void ) {
char * exe_name = get_exe_name();
puts( exe_name );
return 0;
}
这个是需要proc文件系统的支持的,没有安装proc文件系统的OS是不能够用的。
|
问题是你的文件,你检查一下你的文件是不是隐藏文件
如果是C语言编程,你直接用argv[0]就是应用程序的全路径。
如果是C语言编程,你直接用argv[0]就是应用程序的全路径。
|
有一个问题,如果是用getcwd和argv[0]来得出当前的全路径的话,会多一个"."
比如/root./test
比如/root./test