在Linux中获取当前程序运行的绝对路径

本文介绍了一个简单的C程序,该程序使用readlink()函数从/proc/self/exe获取当前正在运行的进程的绝对路径,并将其分为目录和进程名两部分。

readlink() 函数可以获取一个符号链接的路径,而在Linux中的 /proc/self/exe 符号链接为当前运行程序,所以可以利用它获取当前运行程序的绝对路径,代码如下

#include <stdio.h>
#include <unistd.h>
#include <string.h>

size_t get_executable_path( char* processdir,char* processname, size_t len)
{
    char* path_end;
    if(readlink("/proc/self/exe", processdir,len) <=0)
    {
          return -1;
    }
	printf("get current path is :%s\n", processdir);
    path_end = strrchr(processdir,  '/');
    if(path_end == NULL)
    {
          return -1;
    }
    ++path_end;
    strcpy(processname, path_end);
    *path_end = '\0';

    return (size_t)(path_end - processdir);
}




int main(void)
{
	char binpath[256];
	char process[256];

	get_executable_path(binpath, process, sizeof(binpath));
	printf("---------->>> current path is : %s\n", binpath);
	printf("---------->>> current process is : %s\n", process);
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值