Mac OS X Lion: какова максимальная длина пути? - PullRequest
14 голосов
/ 21 августа 2011

У меня проблемы с поиском этой информации, а метод проб и ошибок говорит мне, что значение очень высокое. Поэтому я решил попросить сообщество выяснить, знает ли кто-нибудь и может ли я указать мне яблочную страницу, подтверждающую длину для Lion. Все, что я знаю, это больше, чем снежный барс.

Ответы [ 4 ]

11 голосов
/ 04 июня 2013

Старый, но я нашел ответ:

#include <sys/syslimits.h>

и тогда он будет иметь константу PATH_MAX в качестве #define.В моем случае,

char filenameBuffer [PATH_MAX];

Вы можете жестко указать 1024 как максимальный путь, но с помощью такой константы ваш код будет масштабируемым с новыми выпусками

9 голосов
/ 22 августа 2011

Ограничения зависят от используемой файловой системы - по умолчанию OSX использует HFS Plus ...

Единственные официальные документы, на которые я могу указать, - это спецификация HFS Plus , в которой задано ограничение 255 для длины имени файла.

Википедия намекает на то, что максимальная длина пути в HFS Plus является "неограниченной".

Возможно, обращение в службу поддержки Apple Dev - это самый надежный способ получить точные сведения о лимитах.

6 голосов
/ 05 сентября 2015

Исходя из фактического тестирования в Mac OS X Yosemite, максимальная длина пути составляет 1016 символов.1017 не удается.

0 голосов
/ 13 марта 2019

Скопируйте и вставьте эту команду в приложение терминала MacOSX (или iTerm2, xterm и т. П.)

Баш $ 1003 *

Нажмите клавишу ⟨turn⟩ или ⟨enter⟩ , чтобы запустить его и получить результат:

#define NAME_MAX 255
#define PATH_MAX 1024

Эти максимальные имя и путь длины определено в системном заголовочном файле sys/syslimits.h который cc (компилятор C) читает из некоторого местоположения по умолчанию например, / usr / include / или где-нибудь в приложении Xcode. Загадочные ключи описаны в man cc, но по сути, этот пример компилирует однострочную программу и выводит все определения «макроса» в канал в grep который должен отфильтровывать все, кроме строк, которые мы хотим видеть. Следуйте man grep вниз по кроличьей норе для получения подробной информации о сопоставлении с регулярными выражениями. Аналогичным образом,

bash $ cc -dM -E -xc - <<< ''

компилирует пустую программу и печатает все стандартные определения «макросов», характерные для этой конкретной системы и компилятора - безусловно, стоит заглянуть под капот.

...