文件类型
文件是具有至少一个硬链接(文件名)的一维字节数组。 文件可以包含 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 字节。
处理文件
操作系统提供许多处理文件的子例程。 有关最常用文件控制子例程的简短说明,请参阅下列内容:
创建文件
创建文件时使用下列子例程:
处理文件(编程)
下列子例程可用于处理文件:
- 访问
- 确定文件的可访问性。
- chmod
- 更改文件的访问方式。
- chown
- 更改文件的所有权。
- CLOSE
- 关闭打开的文件描述符(包括套接字)。
- fclear
- 在文件中创建空格。
- fcntl, dup 或 dup2
- 控制打开的文件描述符。
- fsync
- 将文件中的更改写到永久存储器中。
- ioctl
- 与打开的文件描述符关联的控制功能,包括特殊文件、套接字和类属设备支持,例如 termio 常规终端接口。
- lockf 或 flock
- 控制打开的文件描述符。
- lseek 或 llseek
- 在打开的文件中移动 I/O 指针位置。
- OPEN
- 返回由其他子例程用于引用打开的文件的文件描述符。 Open 操作采用常规文件名和指示读、写还是读写文件的许可权方式。
- READ
- 如果由 open 子例程设置了合适的许可权( O_RDONLY 或 O_RDWR),那么从打开的文件获取数据。
- rename
- 更改文件的名称。
- rmdir
- 将目录从文件系统除去。
- stat
- 报告文件的状态,包括所有者和访问方式。
- 截断 (truncate);截取
- 更改文件的长度。
- WRITE
- 如果由 open 子例程设置了合适的许可权( O_WRONLY 或 O_RDWR),那么将数据放入打开的文件中。
有关文件系统的类型和特征的更多信息,请参阅 操作系统和设备管理中的 文件系统 。