使用readlink函数作为“如何在C中找到可执行文件的位置”的解决方案?,我如何将路径转换为char数组?另外,变量buf和bufsize代表什么,以及如何初始化它们?
编辑:我试图获取当前正在运行的程序的路径,就像上面链接的问题一样。这个问题的答案说来有用readlink("proc/self/exe")。我不知道如何在我的程序中实现它。我试过了:
readlink("proc/self/exe")
char buf[1024]; string var = readlink("/proc/self/exe", buf, bufsize);
这显然是不正确的。
这使用的readlink()函数正确的正确使用readlink功能。
readlink
如果您的路径位于中std::string,则可以执行以下操作:
std::string
#include <unistd.h> #include <limits.h> std::string do_readlink(std::string const& path) { char buff[PATH_MAX]; ssize_t len = ::readlink(path.c_str(), buff, sizeof(buff)-1); if (len != -1) { buff[len] = '\0'; return std::string(buff); } /* handle error condition */ }
如果只在固定路径下走:
std::string get_selfpath() { char buff[PATH_MAX]; ssize_t len = ::readlink("/proc/self/exe", buff, sizeof(buff)-1); if (len != -1) { buff[len] = '\0'; return std::string(buff); } /* handle error condition */ }
要使用它:
int main() { std::string selfpath = get_selfpath(); std::cout << selfpath << std::endl; return 0; }