Linux C 獲取當前應用程式的絕對路徑
阿新 • • 發佈:2019-02-20
1. 使用getcwd()獲取的是當前工作路徑,而不一定是程式的路徑
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define MAXBUFSIZE 1024
int main ( int argc, char * argv[] )
{
char buf[ MAXBUFSIZE ];
getcwd(buf, MAXBUFSIZE);
printf("\n");
printf(buf);
printf("\n");
return 0;
}
2. 下面這個是一個 x86_64 GNU/Linux Kernel 3.2.0-67-generic 系統中利用proc獲取絕對路徑的例子
利用 readlink()
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #define MAXBUFSIZE 1024 int main ( int argc, char * argv[] ) { char buf[ MAXBUFSIZE ]; int count; count = readlink( "/proc/self/exe", buf, MAXBUFSIZE ); if ( count < 0 || count >= MAXBUFSIZE ) { printf( "Failed\n" ); return( EXIT_FAILURE ); } buf[ count ] = '\0'; printf( "/proc/self/exe -> [%s]\n", buf ); return( EXIT_SUCCESS ); }