文件类型

文件是具有至少一个硬链接(文件名)的一维字节数组。 文件可以包含 ASCII 或二进制信息。

文件包含数据、shell 脚本或程序。 文件名也用于表示抽象的对象,例如套接字、管道和设备驱动程序。

内核不区别常规文件中的记录边界,所以程序可以建立它们自己的边界标记。

文件在 日志文件系统 (JFS 和 JFS2) 中由磁盘索引节点 (索引节点) 表示。 有关文件的信息(例如所有权、访问方式、访问时间、数据地址和修改时间)存储在索引节点中。

日志文件系统支持下列文件类型:

日志文件系统支持的文件类型
文件类型 mode.h 中使用的宏名称 描述
常规 S_ISREG 具有一个或多个名称的字节序列。 常规文件可以包含 ASCII 或二进制数据。 可以从文件中的任何字节随机访问(读或写)这些文件。
目录 S_ISDIR 包含目录条目(文件名和索引号对)。 目录格式由文件系统确定。 进程如同对普通文件那样读取目录,但是内核保留写到目录的权限。 特殊系列的子例程控制目录条目。
特殊块 S_ISBLK 将结构化的设备驱动程序与文件名关联。
特殊字符 S_ISCHR 将非结构化的设备驱动程序与文件名关联。
管道 先进先出 指定一个进程间通信 (IPC) 通道。 mkfifo 子例程创建命名管道。 Pipe 子例程创建未命名管道。
符号链接 S_ISLNK 包含至另一个文件名的绝对或相对路径名的文件。
套接字 S_ISSOCK 允许应用程序交换数据的 IPC 机制。 Socket 子例程创建套接字, bind 子例程允许命名套接字。

启用大文件的 JFS 文件系统中的常规文件的最大大小略小于 64 GB (68589453312)。 在启用大文件的其他文件系统中和其他 JFS 文件系统类型中,所有没有在前述表格中列示为常规文件的文件均具有 2 GB 减 1 (2147483647) 的最大文件大小。 JFS2 中文件的最大大小受文件系统本身的大小限制。

对 JFS2 文件系统大小的结构限制为 2 52 字节或 4 PB。 64 位内核支持的最大文件大小 244 - 4096 字节,或正好小于 16 TB。

文件名的最大长度为 255 个字符,路径名的最大长度为 1023 字节。

处理文件

操作系统提供许多处理文件的子例程。 有关最常用文件控制子例程的简短说明,请参阅下列内容:

创建文件

创建文件时使用下列子例程:
creat
创建新的空白常规文件
链接
为现有文件创建附加的名称(目录条目)
mkdir
创建目录
mkfifo
创建命名管道
mknod
创建定义设备的文件
OPEN
创建新的空白文件(如果设置了 O_CREAT 标记)
管道 (pipe)
创建 IPC
套接字
创建套接字

处理文件(编程)

下列子例程可用于处理文件:
访问
确定文件的可访问性。
chmod
更改文件的访问方式。
chown
更改文件的所有权。
CLOSE
关闭打开的文件描述符(包括套接字)。
fclear
在文件中创建空格。
fcntl, dup 或 dup2
控制打开的文件描述符。
fsync
将文件中的更改写到永久存储器中。
ioctl
与打开的文件描述符关联的控制功能,包括特殊文件、套接字和类属设备支持,例如 termio 常规终端接口。
lockf 或 flock
控制打开的文件描述符。
lseek llseek
在打开的文件中移动 I/O 指针位置。
OPEN
返回由其他子例程用于引用打开的文件的文件描述符。 Open 操作采用常规文件名和指示读、写还是读写文件的许可权方式。
READ
如果由 open 子例程设置了合适的许可权( O_RDONLYO_RDWR),那么从打开的文件获取数据。
rename
更改文件的名称。
rmdir
将目录从文件系统除去。
stat
报告文件的状态,包括所有者和访问方式。
截断 (truncate);截取
更改文件的长度。
WRITE
如果由 open 子例程设置了合适的许可权( O_WRONLYO_RDWR),那么将数据放入打开的文件中。

有关文件系统的类型和特征的更多信息,请参阅 操作系统和设备管理中的 文件系统