码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下获取当前程序的绝对路径

时间:2020-02-18 16:34:21      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:return   代码   不用   limits   ring   字符   strong   size   res   

在Linux开发应用时,我们常常需要在程序中获取当前程序绝对路径,我们可以通过readlink读取符号链接/proc/self/exe进行获取,这个符号链接代表当前程序,它的源路径就是当前程序的绝对路径,比如我们在终端下键入命令:

[yangye@localhost ~]$ ls -ld /proc/self/exe
lrwxrwxrwx 1 yangye yangye 0 2月  18 16:05 /proc/self/exe -> /usr/bin/ls

可以看到/proc/self/exe指向ls命令的绝对路径。

ok,清楚原理后接下就是完整代码:

#include <string>
#include <limits.h>
#include <sys/types.h>

string GTFEngineHost::getExePath()
{
  char result[PATH_MAX];
  ssize_t count = readlink( "/proc/self/exe", result, PATH_MAX );
  string exePath = string( result, (count > 0) ? count : 0 );
  size_t pos = exePath.find_last_of("\\/");
  return (string::npos == pos)
           ? ""
           : exePath.substr(0, pos);
}

上面代码中最终返回的是程序所在目录,如果需要程序绝对路径时直接返回exePath即可不用再做字符串分割。

Linux下获取当前程序的绝对路径

标签:return   代码   不用   limits   ring   字符   strong   size   res   

原文地址:https://www.cnblogs.com/blackwatch1206/p/12326661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!