Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > установить рабочий каталог


Автор: admsasha 15.6.2011, 16:42
Есть определенный проект, который загружает ресурсы (картинки) по относительному пусти ("images/pic1.png")

Проблема в том, что если его запусти из dolphin (KDE 4.5.5), то рабочий каталог будет "~/Документы", а если из консоли, то рабочий каталог будет тот из которого запущен проект.


Вот на этом коде я проверил теорию
Код

#include <stdio.h>
#include <stdlib.h>

int main (){
  system ("pwd > ~/test.txt");
  return 0;
}


если запускать его из Dolphin то в test.txt будет "/home/sasha/Документы", а если из консоли, то полный путь до a.out


Как установить каталог где находится бинарник рабочим ?

Автор: fish9370 15.6.2011, 16:55
man chdir

Автор: admsasha 15.6.2011, 17:20
Цитата(fish9370 @  15.6.2011,  23:55 Найти цитируемый пост)
man chdir

Не кроссплатформенно (под windows не работает), или это не неизбежно ? 

Ну а текущие место запуска извлекать из argv[0] ? или есть более разумный способ ?

Автор: Alca 15.6.2011, 17:49
http://msdn.microsoft.com/en-us/library/ms235420(v=VS.100).aspx
Цитата

This POSIX function is deprecated. Use the ISO C++ conformant _chdir instead.


Добавлено @ 17:49
Цитата

Не кроссплатформенно (под windows не работает), или это не неизбежно ?

неправда

Автор: admsasha 15.6.2011, 18:09
Цитата(Alca @  16.6.2011,  00:49 Найти цитируемый пост)
ЦитатаНе кроссплатформенно (под windows не работает), или это не неизбежно ?неправда

действительно...
Единственное, это под windows нужно обязательно direct.h инклюдить, под linux не нужно. Поэтому я и думал, что не работает chdir под windows.  Спасибо за ссылку.

Автор: fish9370 15.6.2011, 18:32
Цитата(Alca @  15.6.2011,  17:49 Найти цитируемый пост)
This POSIX function is deprecated. Use the ISO C++ conformant _chdir instead.


интересно почему она стала устаревшей?

Автор: bsa 16.6.2011, 11:41
Цитата(fish9370 @  15.6.2011,  18:32 Найти цитируемый пост)
интересно почему она стала устаревшей? 

Потому что POSIX. мелкомягкие все POSIX функции объявили устаревшими.

Автор: volatile 16.6.2011, 23:50
не то чтобы устаревшими.
Цитата
deprecate  
1) протестовать, выступать против, резко осуждать, возражать to deprecate war — выступать против войны Syn: criticize 
2) преуменьшать, умалять; относиться с пренебрежением He deprecated his own contribution.

читай мелкомягкие протестуют, выступают против, резко осуждают и возражают против POSIX Функций!  smile 


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)