在Linux上,如何获取正在运行的可执行文件的当前逻辑路径,即路径中维护符号链接的路径?
我知道我可以使用readlink /proc/self/exe
获取物理路径,但有没有办法获得逻辑路径?
我写了一个简单的测试程序,test.cc
编译成一个名为test
的可执行文件:
#include <iostream>
#include <unistd.h>
int main(int argc, char* argv[]) {
char buf[256];
readlink("/proc/self/exe", buf, sizeof(buf));
std::cout << buf << std::endl;
return 0;
}
如果我将文件夹/home/mdkess/personal/foo
符号链接到/home/mdkess/personal/foo-1.2.3
,并从/home/mdkess/personal/foo
运行可执行文件,程序将输出物理路径/home/mdkess/personal/foo-1.2.3/test
。如何让它输出逻辑路径,即。 /home/mdkess/personal/foo/test