linux ubuntu c 获得可执行程序的绝对路径 当前目录

博客展示了在Linux环境下,可能与C程序相关的路径信息,包含当前路径、绝对路径等内容,如显示了/home/q/Desktop/a.out 等路径,还给出了PATH_MAX值及readlink返回值等。
#include <iostream>
#include <climits>
#include "cstdlib"
#include "cstdio"
#include "cstring"
#include <unistd.h>
using namespace std;
int main(int argc, char *argv[]) {

	const char* file_name = ".";
	char abs_path_buff[PATH_MAX];

	//获取文件路径, 填充到abs_path_buff
	//realpath函数返回: null表示获取失败; 否则返回指向abs_path_buff的指针
	if (realpath(file_name, abs_path_buff)) {
		printf("%s %s\n", file_name, abs_path_buff);
	} else {
		printf("the file '%s' is not exist\n", file_name);
	}
	getcwd(abs_path_buff, 30);
	cout << "paht:" << argv[0] << endl << abs_path_buff << endl << PATH_MAX
			<< endl;

	char dir[PATH_MAX] = { 0 };
	int n = readlink("/proc/self/exe", dir, PATH_MAX);
	printf("PATH_MAX: %d\n", PATH_MAX);
	printf("readlink return: %d\n", n);
	printf("dir: %s\n", dir);

	int len = strlen(dir) - 1;
	for (int j = len; j > 0; j--)
		if (dir[j] == '/') {
			dir[j + 1] = 0;
			cout << "dir:" << dir << endl;
			break;
		}

	return 0;
}

q@z-OptiPlex-9020:/$ /home/q/Desktop/a.out 
. /
paht:/home/q/Desktop/a.out
/
4096
PATH_MAX: 4096
readlink return: 21
dir: /home/q/Desktop/a.out
dir:/home/q/Desktop/
q@z-OptiPlex-9020:/$ 
 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值