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;
}
复制代码

 

posted @   impluse  阅读(16341)  评论(2)    收藏  举报
编辑推荐:
· 日常问题排查-空闲一段时间再请求就超时
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
· 领域驱动的事实与谬误 一 DDD 与 MVC
· SQL Server 2025 中的改进
· 当数据爆炸遇上SQL Server:优化策略全链路解析
阅读排行:
· Excel百万数据高性能导出方案!
· 日常问题排查-空闲一段时间再请求就超时
· 揭秘 AI 工具的系统提示词「GitHub 热点速览」
· DeepWiki:AI驱动、免费且实用的 GitHub 源码阅读与分析神器!
· C# 14 新增功能一览,你觉得实用吗?
点击右上角即可分享
微信分享提示