首頁 > 軟體

Linux路徑名和檔名最大長度限制

2020-06-16 17:05:39

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

#ifndef _LINUX_LIMITS_H
#define _LINUX_LIMITS_H

#define NR_OPEN            1024

#define NGROUPS_MAX    65536    /* supplemental group IDs are available */
#define ARG_MAX      131072    /* # bytes of args + environ for exec() */
#define LINK_MAX        127    /* # links a file may have */
#define MAX_CANON        255    /* size of the canonical input queue */
#define MAX_INPUT        255    /* size of the type-ahead buffer */
#define NAME_MAX        255    /* # 檔名最大字元數 */
#define PATH_MAX        4096    /* # 相對路徑名最大字元數 */
#define PIPE_BUF        4096    /* # bytes in atomic write to a pipe */
#define XATTR_NAME_MAX  255    /* # chars in an extended attribute name */
#define XATTR_SIZE_MAX 65536    /* size of an extended attribute value (64k) */
#define XATTR_LIST_MAX 65536    /* size of extended attribute namelist (64k) */

#define RTSIG_MAX      32

#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;
}

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-10/147311.htm


IT145.com E-mail:sddin#qq.com