从网上找到的两种方法
1、比较简单的一种,直接利用库函数getcwd()
#include <unistd.h>
char *getcwd(char *buf, size_t size);
作用:把当前目录的绝对地址保存到 buf 中,buf 的大小为 size。如果 size
太小无法保存该地址,
返回 NULL 并设置 errno 为 ERANGE。
getcwd(path,size);
printf("%s\n",path);
2、用readlink,把当前进程的pid对应的目录下面的exe指向的位置读出来
int main(int agrc, char **argv) {
char path[BUF];
char proc[BUF];
char *p;
pid_t mypid=getpid();
sprintf(proc, "/proc/%d/exe", mypid);
readlink(proc,path, BUF); /*proc/pid/exe 是一个链接,用readlink读*/
p = strchr(path,'('); /*读出的路径后面有可能会有 (deleted)字样,删去*/
if (p != NULL) {
p--;
*p = '\0';
}
printf("%s\n",path);
}