2016-03-14 36 views
0

我想知道是否有办法知道mkdir可以创建的目录名称的最大大小。我凭经验发现,我的版本,8.21,上一个Ubuntu 14.04的限制,是1024mkdir“max name length”vs pathconf MAX_PATH&MAX_NAME

$ mkdir $(python -c "print('x' * 1024)") 
$ echo $? 
0 
$ mkdir $(python -c "print('x' * 1025)") 
mkdir: cannot create directory ‘... (x repeated 1025 times) ...’: File name too long 

根据的pathconf(使用PJD一个工具(POSIX文件系统测试套件)):

$ # pathconf("/", NAME_MAX) 
$ ./pjdfstest pathconf/_PC_NAME_MAX 
255 
$ # pathconf("/", PATH_MAX) 
$ ./pjdfstest pathconf/_PC_PATH_MAX 
4096 

任何想法为什么值不同?

编辑1:从命令行中删除用户名。

+0

我正在玩的文件系统为NAME_MAX返回0,所以pjd只是:boom :. –

回答

0

Ubuntu 14.04自带coreutils 8.21,并且其mkdir实用程序对目录名长度没有限制。实际上,传递给execve(通常为几兆字节)的参数列表的长度以及路径的PATH_MAXNAME_MAX配置值的值是有限制的。

在Linux上,glibc的的pathconf函数调用指定的路径上statfs并在所返回的结构使用fr_namelen值确定NAME_MAX。因此,如果/位于不同的文件系统中,那么/pjdfstest目录可能有一个值。在一个评论中,你说文件系统为NAME_MAX返回0,所以它看起来并没有完全实现userland代码所期望的接口。您可能需要查看文件系统的源代码,以了解其如何实现文件名和路径名限制。

相关问题