Linuxでプログラムの絶対パス(全パス)を取得する方法
Linuxでプログラムの絶対パス(全パス)を取得する方法
直接ソース:
改善されたアプローチ:
直接ソース:
#include
#include
#define MAXL_PATH 1024
/**
* NAME: getAbsopath
* DESC:
* REMK: Absopath - Absolute path
*/
char* getAbsopath()
{
static char buf[MAXL_PATH];
int i;
int len = readlink("/proc/self/exe", buf, MAXL_PATH);
if (len < 0 || len >= MAXL_PATH)
{
return NULL;
}
buf[len] = '\0';
for (i = len; i >= 0; i--)
{
if (buf[i] == '/')
{
buf[i + 1] = '\0';
break;
}
}
return buf;
}
int main(int argc, char** argv)
{
printf("%s
", getAbsopath());
return 0;
}
改善されたアプローチ:
#include
#include
/**
* NAME: getAbsopath
* DESC:
* REMK: Absopath - Absolute path
*/
char* getAbsopath(char* buf, const int size)
{
int i;
int len = readlink("/proc/self/exe", buf, size - 1);
if (len < 0 || (len >= size - 1))
{
return NULL;
}
buf[len] = '\0';
for (i = len; i >= 0; i--)
{
if (buf[i] == '/')
{
buf[i + 1] = '\0';
break;
}
}
return buf;
}
int main(int argc, char** argv)
{
char path[1024];
printf("%s
", getAbsopath(path, 1024));
return 0;
}