Вы не можете использовать argv [0] для этой цели, обычно он содержит полный путь к исполняемому файлу, но не обязательно - процесс может быть создан с произвольным значением в поле.
Также обратите внимание, что текущий каталог и каталог с исполняемым файлом - это две разные вещи, поэтому getcwd () также вам не поможет.
В Windows используйте GetModuleFileName (), на Linux read / dev / proc / procID / .. файлы.