На С. Т.е. если, например, екзешник проги находится в директории, входящей в PATH, а запускаю я ее из другого места. Как узнать точное имя родной директории, где лежит екзешник?
В каталоге /proc есть подкаталоги, имена которых -- числа. Каждый такой подкаталог сооветствует одному процессу. Число-имя каталога -- это PID процесса. В каждом таком каталоге есть файл `exe'. Он является симлинком на файл, исполняемый данным процессом. Этот симлинк содержит полный путь к файлу.
Таким образом, тебе надо:
1) узнать PID -- функция getpid(2);
2) прочитать линк /proc/<PID>/exe -- функция readlink(2);
3) вырезать из полученной строки имя файла -- останется только каталог.
Так это можно отследить. Если в argv[0] нет слэшиков, то which, а если есть, то: в случае абсолютного имени всё ясно, в случае относительного - pwd тебе в руки.