平时编程经常需要获取执行程序所在的路径,WINDOWS其实很多了,但是linux相关的很少,这里给出linux和windows相应的函数,功能一模一样
#ifdef WIN32
string GF_GetEXEPath()
{
char FilePath[255];
GetModuleFileName(NULL,FilePath,255);
(strrchr(FilePath,'\\'))[1] = 0;
return string(FilePath);
}
#else
string GF_GetEXEPath()
{
int rval;
char link_target[4096];
char* last_slash;
size_t result_Length;
char* result;
string strExeDir;
rval = readlink("/proc/self/exe", link_target, 4096);
if(rval < 0|| rval >= 1024)
{
return "";
}
link_target[rval] ='\0';
last_slash = strrchr(link_target,'/');
if(last_slash ==0||last_slash==link_target)
return "";
result_Length = last_slash - link_target;
result = (char*)malloc(result_Length+1);
strncpy(result,link_target,result_Length);
result[result_Length]='\0';
strExeDir.append(result);
strExeDir.append("/");
free(result);
return strExeDir;
}
#endif