Linux路徑名和文件名最大長度限制


UNIX標准對路徑名和文件名最大長度限制做出了說明,但其上限值在實際應用長過小,Linux在具體實現時提升了該上限,該限制在Linux的 /usr/include/linux/limits.h 中做出了說明,具體如下:

 1 #ifndef _LINUX_LIMITS_H
 2 #define _LINUX_LIMITS_H
 3 
 4 #define NR_OPEN            1024
 5 
 6 #define NGROUPS_MAX    65536    /* supplemental group IDs are available */
 7 #define ARG_MAX       131072    /* # bytes of args + environ for exec() */
 8 #define LINK_MAX         127    /* # links a file may have */
 9 #define MAX_CANON        255    /* size of the canonical input queue */
10 #define MAX_INPUT        255    /* size of the type-ahead buffer */
11 #define NAME_MAX         255    /* # 文件名最大字符數 */
12 #define PATH_MAX        4096    /* # 相對路徑名最大字符數 */
13 #define PIPE_BUF        4096    /* # bytes in atomic write to a pipe */
14 #define XATTR_NAME_MAX   255    /* # chars in an extended attribute name */
15 #define XATTR_SIZE_MAX 65536    /* size of an extended attribute value (64k) */
16 #define XATTR_LIST_MAX 65536    /* size of extended attribute namelist (64k) */
17 
18 #define RTSIG_MAX      32
19 
20 #endif 

上述文件內容的第11行和第12行分別說明了文件名和相對路徑名的最大長度。需要說明的是,字符指的是ASCII字符,如果是漢字或者其他語言,則需要視編碼而定。

上述頭文件可以被包含到程序中,然后直接加以引用,這些值也可以使用pathconf( )函數來查詢,pathconf( )函數的參數可以參閱該文章中的表格:UNIX環境高級編程 第2章 UNIX標准及實現

一個簡單示例demonstration如下:

#include <iostream>
#include <unistd.h>

using namespace std;

int main()
{
    cout << pathconf("/",_PC_NAME_MAX) << endl;return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM