C, открыть файлы относительно пути исполняемого файла?

Я хочу исправить старую программу на C (получившую исходный код), которая использует относительные пути для загрузки файлов данных, ожидая, что исполняемый файл вызывается из каталога, в котором он находится, например, LoadEx("./dataFile", dataFile); Конечно, вызвать программу из другого каталога не удается, так как dataFile не может быть загружен.

Как я могу изменить программу C для загрузки dataFiles относительно каталога исполняемого файла?

РЕДАКТИРОВАТЬ: мой оригинальный вопрос стал неприменимым и поэтому является дубликатом, по крайней мере, для: - Как мне найти расположение исполняемого файла в C? Открыть файл с его относительным путем в Linux? - Нахождение пути текущего исполняемого файла без /proc/self/exe

1 ответ

Решение

Почему ты не хочешь readlink("/proc/self/exe")? Таким способом можно найти путь к исполняемому файлу в Linux.

Единственный другой способ - вытащить ПУТЬ из окружающей среды с помощью getenv() и пройтись по каталогам PATH в поисках совпадения для argv[0]. Первый вариант намного проще.

Или напишите скрипт для запуска программы после первого выполнения which на исполняемый файл и передачи результата в качестве аргумента командной строки или какой-то подобный хак.

Другие вопросы по тегам