readlink("/proc/self/exe", buffer, buffer_size)
Это даст вам местоположение исполняемого файла под Linux.man 2 readlink
Если вы не используете Linux, вы можете попробовать проверить argv[0]
и посмотреть, где находится текущая программа, но вполне возможно запустить программу с другим argv[0]
чем путь к программе;это может быть имя исполняемого файла, относительный путь или даже что-то, что не имеет никакого отношения к выполняемой программе.
Последней попыткой определить это может быть поиск программы в PATH
и предположим, что если оно есть, то так оно и было.Но я бы не очень доверял этому.
Лучшее решение - не писать программу, основанную на информации такого типа.