所谓的当前路径是指运行路径还是二进制可执行文件所在路径?------从一个恼人的core dump问题说起

本文探讨了在调用API过程中遇到coredump问题的原因。通过一个C语言示例程序,解释了当前路径(.)指的是运行程序时所在的位置而非二进制文件的位置。这有助于理解为何API无法找到预期的资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       最近调用别人封装的一个api, 总是出现core dump问题, 查了较长时间, 也没快速看出是什么原因, 最后不断调试,才发现, 是进程中的api找不到某个jar包, 而又没有做保护, 所以出现core dump.  

       疑问是: 调用api的时候, 明明传了当前路径“./”啊, 也在二进制所在的路径下放置了jar包啊。问题出在哪里? 我们看一段程序:

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

int main(void)
{
	char szBuf[1024] = {0};
	char *p = getcwd(szBuf , 40);
	printf("%s\n", szBuf);

	return 0 ; 
}

     来看下运行结果:

ubuntu@VM-0-15-ubuntu:~/taoge/cpp$ pwd
/home/ubuntu/taoge/cpp
ubuntu@VM-0-15-ubuntu:~/taoge/cpp$ ./a.out 
/home/ubuntu/taoge/cpp
ubuntu@VM-0-15-ubuntu:~/taoge/cpp$ 
ubuntu@VM-0-15-ubuntu:~/taoge/cpp$ 
ubuntu@VM-0-15-ubuntu:~/taoge/cpp$ cd ..
ubuntu@VM-0-15-ubuntu:~/taoge$ pwd
/home/ubuntu/taoge
ubuntu@VM-0-15-ubuntu:~/taoge$ ./cpp/a.out 
/home/ubuntu/taoge
ubuntu@VM-0-15-ubuntu:~/taoge$ 

    可见, 当前路径是指当前运行程序的路径, 而不是二进制可执行文件所在的路径。

    原来如此。



评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值