語境:pathconf(...,_PC_NAME_MAX)提供了什麼保證?
的readdir_r
功能是用來讀取從DIR*
下一個條目(有也是readdir
,但是這不是線程安全的)。 readdir_r
需要一個指向用戶分配緩衝區的指針來保存輸出dirent
。手冊頁表示此緩衝器所需的尺寸可以是不同的系統上不同的,並且提供瞭如何找到在運行時安全的長度的例子:
len = offsetof(struct dirent, d_name) + pathconf(dirpath, _PC_NAME_MAX) + 1;
(警告:有一個爭用條件在上文中,
縱觀聯機幫助頁:可以通過使用dirfd
以獲取打開DIR*
文件描述符和使用pathconf
fpathconf
代替)
問題被避免3210,它指出:
_PC_NAME_MAX 返回一個文件名的最大長度在該目錄路徑或fd該進程被允許創建。相應的宏是_POSIX_NAME_MAX。
然而,在註釋部分,它指出:
與名稱長度長於值返回名稱等於_PC_NAME_MAX指定目錄可能存在文件。
這個說明是正確的嗎?如果是這樣,readdir_r
手冊頁中的示例代碼不正確?