Получить максимальную длину пути

Все о программировании под *nix
Аватара пользователя
Andrey A. Ugolnik
Интересующийся
Сообщения: 54
Зарегистрирован: 24 июн 2006, 13:39
Откуда: Minsk
Контактная информация:

Получить максимальную длину пути

Сообщение Andrey A. Ugolnik »

В винде есть define MAX_PATH установленный в 256 (или 260).
Как выяснить максимальную длину пути в линуксе?
Regards, _Andrey_
http://www.wegroup.org

Аватара пользователя
br
Увлекающийся
Сообщения: 105
Зарегистрирован: 30 окт 2005, 04:17

Сообщение br »

[raven@sewer ~]$ grep PATH /usr/include/linux/limits.h
#define PATH_MAX 4096 /* # chars in a path name including nul */

Аватара пользователя
Andrey A. Ugolnik
Интересующийся
Сообщения: 54
Зарегистрирован: 24 июн 2006, 13:39
Откуда: Minsk
Контактная информация:

Сообщение Andrey A. Ugolnik »

Э нет, не то, почему ./configure вычисляет значение в 32K на моей конфигурации?
Про такой путь я сегодня читал, но с толку сбивает рез-т ./configure
Regards, _Andrey_
http://www.wegroup.org

Aleksey Kondratenko
Неотъемлемая часть форума
Сообщения: 250
Зарегистрирован: 12 авг 2003, 03:55
Контактная информация:

Сообщение Aleksey Kondratenko »

Видимо, configure вычисляет что-то другое.

В ядре Linux (по крайней мере, ванильном 2.6.16.20) органичение на длину пути 4096.

Маленький тест это подтверждает:

Код: Выделить всё

#!/usr/bin/ruby
path = "."
begin
        loop { File::stat(path << "/.") }
rescue
        puts "Exceeded length at #{path.length}"
end

pulsar++
Заглянувший
Сообщения: 32
Зарегистрирован: 15 ноя 2004, 16:57

Сообщение pulsar++ »

#include <unistd>

int main() {
printf("%d",sysconf(_PC_PATH_MAX ));
}


у меня показывает 1024

Аватара пользователя
Andrey A. Ugolnik
Интересующийся
Сообщения: 54
Зарегистрирован: 24 июн 2006, 13:39
Откуда: Minsk
Контактная информация:

Сообщение Andrey A. Ugolnik »

Огромное спасибо! Это то, что мне и надо.
Regards, _Andrey_
http://www.wegroup.org

Аватара пользователя
Andrey A. Ugolnik
Интересующийся
Сообщения: 54
Зарегистрирован: 24 июн 2006, 13:39
Откуда: Minsk
Контактная информация:

Сообщение Andrey A. Ugolnik »

В моем случае sysconf(_PC_PATH_MAX) вернул 1024.
Не понимаю, почему разнятся рез-ты.
Regards, _Andrey_
http://www.wegroup.org

Aleksey Kondratenko
Неотъемлемая часть форума
Сообщения: 250
Зарегистрирован: 12 авг 2003, 03:55
Контактная информация:

Сообщение Aleksey Kondratenko »

Вообще-то _PC_PATH_MAX надо передавать в pathconf или в fpathconf.

см. man pathconf.

Так правильно:

Код: Выделить всё

#include <unistd>
#include <stdio>

int main()
{
        printf("%d\n", pathconf("/", _PC_PATH_MAX));
}
И результат - 4096.

Ответить