Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > Как узнать полный путь к своей программе |
Автор: Finn 30.6.2007, 10:49 |
Подскажите, как узнать полный путь к программе из самой программы, если я зупускаю её из другого места? Например, чтоб функция вернула мне /usr/bin. |
Автор: Kuvaldis 30.6.2007, 12:02 |
первый аргумент командной строки отвечает за полный путь Это значит, что если main() объявлена так: int main(int argc, char* argv[]) то путь - это строка argv[0] |
Автор: nickless 30.6.2007, 12:14 | ||
В нём тот путь, с которым запустили программу, если запустить программу /usr/bin/prog например так:
То в argv[0] будет ../bin/prog, а не /usr/bin/prog Нужно проверять, полный ли путь и если нет, добавлять рабочую папку, (man getcwd) |
Автор: MAKCim 30.6.2007, 12:17 | ||
Kuvaldis, немного не то ему нужен полный путь а если брать только argv[0], то он может быть относительным Добавлено через 13 минут и 25 секунд
|
Автор: Finn 30.6.2007, 13:53 |
Спасибо. |
Автор: null56 15.5.2008, 00:33 | ||||
Так не ВСЕГДА сработает, потому что get_current_dir_name возвращает текущий рабочий каталог, но это не значит, что пользователь запускает его именно из того, где находится исполняемый файл
Например: Запускаем: ./my_file Здесь все норм: чтобы не стояло слева в пути, все будет выведено + / basename Но: Запускаем: cd /root /root/1/2/3/4/my_file На выходе получим: /root + / + basename Чтобы всегда получать полный путь (это даже написано в описании этих функций)
То есть: dirname(argv[0]) + "/" + basename(argv[0]) - всегда будем получать правильный ответ... Насколько показали тесты... |
Автор: xvr 15.5.2008, 11:58 | ||
Имя исполняемого файла (Linux):
|
Автор: MAKCim 15.5.2008, 13:34 |
null56, xvr, некрофилы ![]() |