zoukankan      html  css  js  c++  java
  • Windows/Linux获取当前运行程序的绝对路径

    windows

    获取当前运行程的绝对路径(.exe)

    GetModuleFileNameA()函数获取绝对路径,不过文件路径中的反斜杠需要进行替换。

    char szFilePath[MAX_PATH+1];
    GetModuleFileNameA(NULL, szFilePath, MAX_PATH);

    linux

    获取程序当前目录绝对路径

    1. Shell 版本
        #获取当前脚本所在绝对路径
        cur_dir=$(cd "$(dirname "$0")"; pwd)
    
    2. C语言版本
    方法一、用realpath函数。这种方法用于开机启动程序获取自身目录会出错
    char current_absolute_path[MAX_SIZE];
    //获取当前目录绝对路径
    if (NULL == realpath("./", current_absolute_path))
    {
        printf("***Error***
    ");
        exit(-1);
    }
    strcat(current_absolute_path, "/");
    printf("current absolute path:%s
    ", current_absolute_path);
    方法二、用getcwd函数。这种方法用于开机启动程序获取自身目录会出错
    char current_absolute_path[MAX_SIZE];
    //获取当前目录绝对路径
    if (NULL == getcwd(current_absolute_path, MAX_SIZE))
    {
        printf("***Error***
    ");
        exit(-1);
    }
    printf("current absolute path:%s
    ", current_absolute_path);
    
    方法三、用readlink函数。这种方法最可靠,可用于开机启动程序获取自身目录
    char current_absolute_path[MAX_SIZE];
    //获取当前程序绝对路径
    int cnt = readlink("/proc/self/exe", current_absolute_path, MAX_SIZE);
    if (cnt < 0 || cnt >= MAX_SIZE)
    {
        printf("***Error***
    ");
        exit(-1);
    }
    //获取当前目录绝对路径,即去掉程序名
    int i;
    for (i = cnt; i >=0; --i)
    {
        if (current_absolute_path[i] == '/')
        {
            current_absolute_path[i+1] = '';
            break;
        }
    }
    printf("current absolute path:%s
    ", current_absolute_path);
  • 相关阅读:
    Java中替换字符串中特定字符,replaceAll,replace,replaceFirst的区别
    牛客剑指offer 67题(持续更新~)
    从尾到头打印链表
    字符串变形
    缩写
    删除公共字符
    替换空格
    二维数组的查找
    acm博弈论基础总结
    acm模板总结
  • 原文地址:https://www.cnblogs.com/lizhanzhe/p/10789047.html
Copyright © 2011-2022 走看看