您的位置:首页 > 运维架构 > Linux

linux中获得当前目录的方法

2016-11-22 22:40 405 查看
两种方法:

1. 利用getcwd()函数取得当前工作目录(相当于windows下的GetCurrentDirectory)

2. 取得实际文件目录(相当于windows下的GetModuleFileName())

原理:每个进程在/proc下都有一个以进程号命名的目录。在该目录下有exe文件,该文件是一个链接文件,它指向的路径就是该进程的全路径.

用readlink()读exe文件返回该进程的全路径

如果不在意可能导致的安全隐患,可以使用procfs,然后readlink,把当前进程的pid对应的目录下面的file指向的位置读出来(注意需要先挂载procfs)

  pit_t mypid = getpid(); 

  sprintf(strsrc, "/proc/%d/file", mypid); 

  readlink(strsrc, strdest, LEN);//LEN最好是你的_POSIX_PATH_MAX

所以,如果支持/proc文件系统,下面的代码可以解决你的问题: 

[csharp] view
plain copy

#include <stdlib.h>  

#include <unistd.h>  

#include <stdio.h>  

 

#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 < 0 || rslt >= PATH_MAX )   

    {  

        return NULL;  

    }  

    buf[rslt]=0;  

    return buf;  

}  

    

int main( void)  

{  

    char * exe_name = get_exe_name();  

    printf("%s\n", exe_name );  

    return 0;  

}  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: