Mac OS X Lion:最大路径长度是多少?

Rod*_*ley 15 filesystems macos path osx-lion

我无法找到这些信息,而且反复试验告诉我价值非常高.所以我想我要求社区看看是否有人知道并且可以指向一个确认Lion长度的苹果页面.我所知道的是雪豹更大.

Joe*_*nte 11

老了,但我找到了答案:

#include <sys/syslimits.h>
Run Code Online (Sandbox Code Playgroud)

然后它将PATH_MAX常量作为#define.就我而言,

char filenameBuffer [PATH_MAX];
Run Code Online (Sandbox Code Playgroud)

您可以将1024硬编码为最大路径,但使用类似的常量会使您的代码可以使用新版本进行扩展

  • 另请注意,"NAME_MAX"也是单个文件名的限制. (3认同)

Yah*_*hia 9

限制取决于使用的文件系统 - 默认情况下OSX使用HFS Plus ...

我可以指出的唯一官方文件是HFS Plus规范,它记录了文件名长度的限制为255.

维基百科暗示HFS Plus的最大路径长度是"无限制".

也许联系Apple Dev支持是获得有关限制的确切陈述的最可靠方法.


wis*_*cky 6

从Mac OS X Yosemite上的实际测试来看,最大路径长度为1016个字符.1017失败了.

  • 注意/ tmp,/ etc和/ var是/ private/tmp,/ private/etc和/ private/var的符号链接.如果您尝试在这些目录中创建文件,您将能够创建大小(1024 - len(/ private))的路径,即1016 (2认同)

dev*_*von 5

将此命令复制并粘贴到 MacOSX 的终端应用程序(或 iTerm2、xterm 等)中

\n\n

重击$cc -dM -E -xc - <<< \'#include <sys/syslimits.h>\' | grep -i \' [NP]A.._MAX\'

\n\n

\xe2\x9f\xa8return\xe2\x9f\xa9\xe2\x9f\xa8enter\xe2\x9f\xa9键运行它并得到结果:

\n\n
#define NAME_MAX 255\n#define PATH_MAX 1024\n
Run Code Online (Sandbox Code Playgroud)\n\n

这些最大名称路径长度在系统头文件中定义,sys/syslimits.h该文件cc(C 编译器)从某些默认位置(例如 /usr/include/ 或 Xcode 应用程序中的某个位置)读取。\n这些神秘的开关记录在man ccbut\本质上,这个示例编译了一个单行程序,并将所有“宏”定义打印到一个管道中,grep该管道应该过滤掉除我们想要查看的行之外的所有行。跟随man grep兔子洞了解有关正则表达式模式匹配的详细信息。相似地,

\n\n

重击$cc -dM -E -xc - <<< \'\'

\n\n

编译一个空程序并打印该特定系统特有的所有标准“宏”定义,并且编译器 \xe2\x80\x94 绝对值得一看。

\n

  • 虽然此代码片段很受欢迎,并且可能会提供一些帮助,但如果它包含*如何*和*为什么*解决问题的解释,则会得到极大的改进](//meta.stackexchange.com/q/114762) 。请记住,您是在为将来的读者回答问题,而不仅仅是现在提问的人!请[编辑]您的答案以添加解释,并指出适用的限制和假设。 (2认同)