C, открыть файлы относительно пути исполняемого файла?
Я хочу исправить старую программу на C (получившую исходный код), которая использует относительные пути для загрузки файлов данных, ожидая, что исполняемый файл вызывается из каталога, в котором он находится, например, LoadEx("./dataFile", dataFile);
Конечно, вызвать программу из другого каталога не удается, так как dataFile
не может быть загружен.
Как я могу изменить программу C для загрузки dataFiles
относительно каталога исполняемого файла?
РЕДАКТИРОВАТЬ: мой оригинальный вопрос стал неприменимым и поэтому является дубликатом, по крайней мере, для: - Как мне найти расположение исполняемого файла в C? Открыть файл с его относительным путем в Linux? - Нахождение пути текущего исполняемого файла без /proc/self/exe
1 ответ
Почему ты не хочешь readlink("/proc/self/exe")
? Таким способом можно найти путь к исполняемому файлу в Linux.
Единственный другой способ - вытащить ПУТЬ из окружающей среды с помощью getenv()
и пройтись по каталогам PATH в поисках совпадения для argv[0]. Первый вариант намного проще.
Или напишите скрипт для запуска программы после первого выполнения which
на исполняемый файл и передачи результата в качестве аргумента командной строки или какой-то подобный хак.