2016-03-14 32 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代碼所期望的接口。您可能需要查看文件系統的源代碼,以瞭解其如何實現文件名和路徑名限制。

相關問題