C语言获取执行程序所在的目录路径

平时编程经常需要获取执行程序所在的路径,WINDOWS其实很多了,但是linux相关的很少,这里给出linux和windows相应的函数,功能一模一样

#ifdef WIN32
string GF_GetEXEPath()
{
    char FilePath[255];
    GetModuleFileName(NULL,FilePath,255); 
    (strrchr(FilePath,'\\'))[1] = 0; 
   
    return string(FilePath);
}

#else

string GF_GetEXEPath()
{
     int rval;
    char link_target[4096];
    char* last_slash;
    size_t result_Length;
    char* result;

    string strExeDir;
    
    rval = readlink("/proc/self/exe", link_target, 4096);
    if(rval < 0|| rval >= 1024)
    {
        return "";
    }
    link_target[rval] ='\0';
    last_slash = strrchr(link_target,'/');
    if(last_slash ==0||last_slash==link_target)
        return "";

    result_Length = last_slash - link_target;
    result = (char*)malloc(result_Length+1);
    strncpy(result,link_target,result_Length);
    result[result_Length]='\0';

    strExeDir.append(result);
    strExeDir.append("/");
    free(result);
    return strExeDir;
}

#endif

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值