C, Linux, getcwd / chdir (): получить двоичный путь - PullRequest
1 голос
/ 29 марта 2011

Я хочу открыть несколько файлов (конфигурации log4cxx, другие журналы и т. Д.) Относительно местоположения двоичного файла.

К сожалению, и getwd(), и getcwd() дают мне каталог, из которого я пытаюсь запустить двоичный файл по известному пути, вместо того, чтобы указывать путь, где находится двоичный файл (и где находятся данные).

Как получить путь к приложению, чтобы использовать его с chdir()? Любые методы, кроме argv[0] и без попытки анализа / proc / $ PID / (это недостаточно переносимо) ?

Ответы [ 2 ]

3 голосов
/ 29 марта 2011

Пройдите по пути PATH и найдите исполняемый файл с тем же именем, что и argv [0]?

Однако, вероятно, было бы лучше предоставить пользователю способ настройки расположения данных.Файл env var или config или параметр CL или что-то .Очень неприятно иметь дело с программами, которые пытаются быть полезными, но на самом деле просто глупы.

1 голос
/ 29 марта 2011

Это именно то, что нужно autoconf , и поддержка этих стандартных каталогов в значительной степени обязательна, если вы хотите, чтобы кто-либо, кроме программистов, написавших ваше программное обеспечение, использовал его.После правильной настройки для отладки из вашего домашнего каталога все, что вам нужно сделать, это передать другое значение --prefix= в configure.

...