#include <stdio.h>
#include <unistd.h> // readlink
#include <stdlib.h> // exit
#include <linux/limits.h> // PATH_MAX // exe
#include <libgen.h> // dirname
int main()
{
char exe[PATH_MAX], real_exe[PATH_MAX];
ssize_t r;
char *dir;
if ((r = readlink("/proc/self/exe", exe, PATH_MAX)) < 0) {
exit(1);
}
if (r == PATH_MAX) {
r -= 1;
}
exe[r] = 0;
if (realpath(exe, real_exe) == NULL) {
exit(1);
}
dir = dirname(real_exe);
puts(dir);
return 0;
}
/*
run:
/tmp/Mx3Jtkqpxp
*/