专栏中心

EEPW首页 > 专栏 > Linux C——获取当前目录的方法

Linux C——获取当前目录的方法

发布人:电子禅石 时间:2020-04-14 来源:工程师 发布文章
两种方法:
1. 利用getcwd()函数取得当前工作目录(相当于windows下的GetCurrentDirectory)
2. 取得实际文件目录(相当于windows下的GetModuleFileName())
原理:每个进程在/proc下都有一个以进程号命名的目录。在该目录下有exe文件,该文件是一个链接文件,它指向的路径就是该进程的全路径.
用readlink()读exe文件返回该进程的全路径
如果不在意可能导致的安全隐患,可以使用procfs,然后readlink,把当前进程的pid对应的目录下面的file指向的位置读出来(注意需要先挂载procfs)
  pit_t mypid = getpid();
  sprintf(strsrc, "/proc/%d/file", mypid);
  readlink(strsrc, strdest, LEN);//LEN最好是你的_POSIX_PATH_MAX
所以,如果支持/proc文件系统,下面的代码可以解决你的问题:
[csharp] view
 plain copy
#include <stdlib.h> 
#include <unistd.h> 
#include <stdio.h> 
 
#ifndef PATH_MAX 
#define PATH_MAX 1024 
#endif 
   
char * get_exe_name()  

    static char buf[PATH_MAX]; 
    int rslt = readlink("/proc/self/exe", buf, PATH_MAX); 
    if ( rslt < 0 || rslt >= PATH_MAX )  
    { 
        return NULL; 
    } 
    buf[rslt]=0; 
    return buf; 

   
int main( void) 

    char * exe_name = get_exe_name(); 
    printf("%s\n", exe_name ); 
    return 0; 

————————————————

原文链接:https://blog.csdn.net/qq_31108501/article/details/53266464


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

I2C模拟函数

资源下载 2007-02-09

Omdia分析半导体业走势,看好存储、AI、RISC-V的增长

Omdia对智能体和人形机器人的技术趋势与预测

与可再生能源的互联让现有电厂变绿

Pickering在华十周年:深耕开关与信号路径技术,本土交付实力再跃新阶

测试测量 2025-12-24

i2c_asm_源码包

资源下载 2007-02-09

聚焦新的SHARC处理器系列

视频 2010-05-12

美国FCC今天开始对新无人机实施进口禁令

2010全球电子峰会:Altera公司

视频 2010-05-14

英特尔计划进行重大CPU路线图转变:从Hammer Lake转向NVIDIA协作

苹果将从三星采购iPhone 17 60–70%的LPDDR5X

2010全球电子峰会:QuickLogic公司

视频 2010-05-12

不被看好的AMD悄然成为击败英伟达的候选者

智能计算 2025-12-24

利用 ISE Design Suite 11 内的 Xilinx Platform Studio

视频 2010-05-06

2010全球电子峰会:Lattice公司

视频 2010-05-13

中芯国际将上调10%的价格,存储产品领跑

倪光南:“AI+空间计算”让机器人看懂世界,希望形成“AI+RV芯片”的生态

更多 培训课堂
更多 焦点
更多 视频

技术专区