Using the readlink function used as a solution to How do I find the location of the executable in C?, how would I get the path into a char array? Also, what do the variables buf and bufsize represent and how do I initialize them?
EDIT: I am trying to get the path of the currently running program, just like the question linked above. The answer to that question said to use readlink("proc/self/exe")
. I do not know how to implement that into my program. I tried:
char buf[1024]; string var = readlink("/proc/self/exe", buf, bufsize);
This is obviously incorrect.
This Use the readlink() function properly for the correct uses of the readlink
function.
If you have your path in a std::string
, you could do something like this:
#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 */ }
If you're only after a fixed path:
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 */ }
To use it:
int main() { std::string selfpath = get_selfpath(); std::cout << selfpath << std::endl; return 0; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With