两种方法:
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
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
NE555构成的发酵罐温度测警和控制电路
I2C模拟函数
Omdia分析半导体业走势,看好存储、AI、RISC-V的增长
Omdia对智能体和人形机器人的技术趋势与预测
保护人身和设备安全的固体传感开关
与可再生能源的互联让现有电厂变绿
电子调温器
Pickering在华十周年:深耕开关与信号路径技术,本土交付实力再跃新阶
i2c_asm_源码包
聚焦新的SHARC处理器系列
美国FCC今天开始对新无人机实施进口禁令
2010全球电子峰会:Altera公司
gao兄,今天北京天气如何?
英特尔计划进行重大CPU路线图转变:从Hammer Lake转向NVIDIA协作
探讨UCOS的新问题
苹果将从三星采购iPhone 17 60–70%的LPDDR5X
2010全球电子峰会:QuickLogic公司
亚太区市场Windows CE PDA增长迅猛
全自动冰箱保护器
HT-VDS81W 5.4 版软件(Holtek)
不被看好的AMD悄然成为击败英伟达的候选者
预计今年我国DVD销量可望达到400万台
利用 ISE Design Suite 11 内的 Xilinx Platform Studio
单相可控硅过零触发电炉温控电路(NE555、C302、CD40192)
电话嵌入式语音技术离我们有多远?
2010全球电子峰会:Lattice公司
中芯国际将上调10%的价格,存储产品领跑
倪光南:“AI+空间计算”让机器人看懂世界,希望形成“AI+RV芯片”的生态
HT46R47R48R49R系列OTP单片机选型指南
HT47C48C49C 系列MASK单片机选型指南