免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2198 | 回复: 2

LINUX C执行后如何取得自己的绝对路径 [复制链接]

论坛徽章:
0
发表于 2007-04-12 16:40 |显示全部楼层
我不实现不管把二进制文件移动到哪里他都可以获得自己的路径
比如当前目录
/home/test/
里面有一可执行文件bb
我在/目录下执行/home/test/bb
可以打算出/home/test/或者/home/test/bb
如果将/home/test加入环境变量
export PATH=$PATH:/home/test
执行bb
也同样可以打印出/home/test/或者/home/test/bb
如果将/home/test/bb移动到/usr/bin/bb
那么程序执行结果就是/usr/bin/或者/usr/bin/bb
不知我是否描述清楚了!谢谢!不知有何API可提供该功能!

论坛徽章:
0
发表于 2007-04-12 17:13 |显示全部楼层

  1. #include <unistd.h>
  2. #include <stdio.h>
  3. #include <sys/types.h>

  4. int main()
  5. {
  6.         char buffer[256] = "";
  7.         char path[256]   = "";
  8.        
  9.         pid_t pid = getpid();
  10.        
  11.         sprintf(path, "/proc/%d/exe", pid);
  12.         if (readlink(path, buffer, sizeof(buffer)) == -1) {
  13.                 perror("readlink");
  14.                 _exit(1);
  15.         }
  16.        
  17.         printf("%s\n", buffer);
  18.        
  19.         return 0;
  20. }
复制代码

评分

参与人数 1可用积分 +3 收起 理由
langue + 3

查看全部评分

论坛徽章:
0
发表于 2007-04-13 08:49 |显示全部楼层
OK谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP