摘要:本文介紹Linux的應用程序和內核模塊獲取當前進程執行文件絕對路徑的實現方法。linux
注意:使用此方法時,若是執行一個指向執行文件的連接文件,則得到的不是連接文件的絕對路徑,而是執行文件的絕對路徑。code
#include <stdio.h> #include <unistd.h> int main( ) { char link[100]; char path[100]; sprintf( link, "/proc/%d/exe", getpid() ); int i = readlink( link, path, sizeof( path ) ); path[i] = '\0'; printf( "%s : %d\n", path, getpid() ); return 0; }
#include <linux/namei.h> #include <linux/dcache.h> char *ptr; char link[100], buf[256]; struct path path; sprintf( link, "/proc/%d/exe", current->pid ); int err = kern_path( link, LOOKUP_FOLLOW, &path ); if ( !err ) { ptr = d_path( &path, buf, 256 ); if ( !IS_ERR( ptr ) ) { // prt contains real path } path_put( &path ); }