[FreeBSD] Как получить полный путь процесса
При запуске программы текущим может быть любой каталог.
В /proc/pid/* пути нет. Кто что может посоветовать ??
/gcc
Кто что может посоветовать ??
ответ уже был дан. но я бы добавил, что лучше держать конфиги согласно стандарту - в /etc, а точное местоположение определять на этапе сборки пакета (например ./configure --with-conf-dir=/usr/local/etc). если требуется использовать отличный от дефолтно расположенного конфиг - задавать это явно:
./prog -C prog.conf
если я правильно понял вопрос, то
http://www.codenet.ru/progr/cpp/spru/getcwd.php
или system("pwd");
Меня не интересует текущий каталог, меня интересует каталог в котором находится запускаемая программа.
Пока я использую следующее решение:
Беру ARGV[0] и заменяю имя запускаемого файла на имя конфигурационного. Если запуск производится из текущего каталога, то в ARGV[0] "./filename", если из другого, то в ARGV[0] есть полный или относительный путь, например "../mydir/filename"
ответ уже был дан. но я бы добавил, что лучше держать конфиги согласно стандарту - в /etc, а точное местоположение определять на этапе сборки пакета (например ./configure --with-conf-dir=/usr/local/etc). если требуется использовать отличный от дефолтно расположенного конфиг - задавать это явно:
./prog -C prog.conf
Пакет постовляется в собранном виде. Рутовых привелегий нет. Командной строкой пользоваться нельзя по ТЗ
мне нужно получить полный путь к конфигурационному файлу. Он находится в одном каталоге с программой.
При запуске программы текущим может быть любой каталог.
В /proc/pid/* пути нет. Кто что может посоветовать ??
/gcc
{
puts(argv[0]);
}
void main(){
char *pathvar;
pathvar = getenv("PWD");
printf("%s\n",pathvar);
}
в *pathvar лежит полный путь (от корня)
void main(){
char *pathvar;
pathvar = getenv("PWD");
printf("%s\n",pathvar);
}
в *pathvar лежит полный путь (от корня)
Переходим в /home/mike запускаем программу как
/usr/local/myprogram/example
Результат работы:
А мне надо /usr/local/myprogram
{
puts(argv[0]);
}
Вот так и делаю. А как проделать то-же самое на Perl ??
ARGV[0] там содержит первый агрумент, а не имя запускаемого файла. Может есть что-то типа PHP-шного "PHP_SELF"
Вот так и делаю. А как проделать то-же самое на Perl ??
ARGV[0] там содержит первый агрумент, а не имя запускаемого файла. Может есть что-то типа PHP-шного "PHP_SELF"
Разобрался. В Perl - $0
Разобрался. В Perl - $0
так надо было сразу говорить, что на perl ))