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;
}
相关推荐
vance042 分钟前
免费Cloudflare隧道隐藏公网IP
linux·tcp/ip·github
hansang_IR1 小时前
【题解】LC:Z 算法(Z Algorithm)
c++·算法·字符串
三言老师1 小时前
文本工具组合统计服务器日志数据
linux·运维·服务器
mounter6252 小时前
认识 Tetragon:基于 eBPF 的安全监控与强制执行工具
linux·ebpf·cve·kernel
海清河晏1113 小时前
Qt 实战:信号与槽+事件系统
开发语言·c++·qt
aixingkong9213 小时前
AI超节点Scale Up域总线各层优化设计
linux·服务器·网络
啦啦啦啦啦zzzz3 小时前
设计模式:原型模式
c++·设计模式·原型模式
小保CPP3 小时前
OpenCV C++基于CNN模型的场景文本检测(OCR)
c++·人工智能·opencv·计算机视觉·cnn·ocr·光学字符识别
kidwjb3 小时前
Linux内核-文件系统-文件系统目录和文件操作
linux·内核·文件系统
_艾伦 耶格尔.4 小时前
进程控制
linux