linux c++获取当前程序的运行路径

比如我的程序名 为:aaa

存放路径 是:/homo/code/

我在/home/ccc 目录执行shell文件。shell文件的内容为

powershell 复制代码
#!/bin/bash
/homo/code/aaa

希望 获取的路径是 /homo/code/ 而不是脚本的路径

给出完整接口代码

cpp 复制代码
#include <iostream>
#include <string>
#include <string.h>
#include <unistd.h>

#define MAX_PATH_LEN  256

bool getCurrRunningPath(std::string &currPath)
{
    char path[MAX_PATH_LEN] = {0};
    char *p = NULL;
    ssize_t n = readlink("/proc/self/exe", path, MAX_PATH_LEN);
    if (n > 0) {
        p = strrchr(path, '/');
        *(p + 1) = '\0'; // 去掉最后的程序名称
        currPath.assign(path);
        std::cout << "get current running path:" << path << std::endl;
        return true;
    } else {
        std::cout << "get current running path failed, errno: " << errno << std::endl;
    }

    return false;
}

int main()
{
 std::string curpath;
 getCurrRunningPath(curpath);
 std::cout << "***: " << curpath << std::endl;

 return 0;
}
相关推荐
一个平凡而乐于分享的小比特4 分钟前
Linux最小系统详解
linux·最小系统
Levin__NLP_CV_AIGC5 分钟前
Ubuntu部署Dufs
linux·运维·服务器·ubuntu·ssh
xiaolongmeiya7 分钟前
P7082 [NWRRC 2013] Dwarf Tower 完全背包
c++
2401_8762213416 分钟前
因数个数、因数和、因数积
c++·算法
十五年专注C++开发18 分钟前
VS2019编译的C++程序,在win10正常运行,在win7上Debug正常运行,Release运行报错0xC0000005,进不了main函数
开发语言·c++·报错c0x0000005
wulalalalalalalal22 分钟前
Linux 内网服务器通过代理访问外网
linux·运维·服务器
C_心欲无痕24 分钟前
ts - 模板字面量类型与 `keyof` 的魔法组合:`keyof T & `on${string}`使用
linux·运维·开发语言·前端·ubuntu·typescript
fy zs27 分钟前
网络编程套接字
linux·服务器·网络·c++
fpcc28 分钟前
模板编程—模板和元编程中的错误输出
c++·模板编程
xie_pin_an30 分钟前
C++ 类和对象全解析:从基础语法到高级特性
java·jvm·c++