![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
Finn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 12.6.2007 Репутация: нет Всего: нет |
Подскажите, как узнать полный путь к программе из самой программы, если я зупускаю её из другого места?
Например, чтоб функция вернула мне /usr/bin. |
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
первый аргумент командной строки отвечает за полный путь
Это значит, что если main() объявлена так: int main(int argc, char* argv[]) то путь - это строка argv[0] -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 4 Всего: 181 |
В нём тот путь, с которым запустили программу, если запустить программу /usr/bin/prog например так:
То в argv[0] будет ../bin/prog, а не /usr/bin/prog Нужно проверять, полный ли путь и если нет, добавлять рабочую папку, (man getcwd) -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
Kuvaldis,
немного не то ему нужен полный путь а если брать только argv[0], то он может быть относительным Добавлено через 13 минут и 25 секунд
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Finn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 12.6.2007 Репутация: нет Всего: нет |
Спасибо.
|
|||
|
||||
null56 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 4 Всего: 12 |
Так не ВСЕГДА сработает, потому что 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 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Имя исполняемого файла (Linux):
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
null56,
xvr, некрофилы ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |