最近调用别人封装的一个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$
可见, 当前路径是指当前运行程序的路径, 而不是二进制可执行文件所在的路径。
原来如此。