fcntl.h 文件
用途
定义文件控制选项。
描述
/usr/include/fcntl.h 文件定义可以为 fcntl 子例程的 Command 和 Argument 参数以及 open 子例程的 Oflag 参数指定的值。 打开文件的文件状态标志在以下信息中进行了描述。
打开子例程的标志值
以下标志值仅可由 开 子例程访问:
| 项 | 描述 |
|---|---|
| O_RDONLY | 只读 |
| 0-WRONLY | 仅写 |
| 0-RDWR | 读和写 |
| 创建 0 个 | 使用文件创建打开 (使用第三个 开 参数) |
| O_TRUNC | 以截断状态打开 |
| 重定向 | 为直接 I/O 打开 |
| O_EXCL | 互斥打开 注: 网络文件系统 (NFS) 不完全支持 O_EXCL 标志。 NFS 协议不保证 O_EXCL 标志的设计功能。
|
| 0-无 | 不指定控制终端 |
| O_RESHARE | 读取共享打开 |
| O_NSHARE | 读取共享打开 |
文件访问方式掩码
使用 O_ACCMODE 掩码来确定文件访问方式。
打开和 fcntl 子例程的文件状态标志
开 和 弗纳特尔 子例程都可以访问下列文件状态标志:
| 项 | 描述 |
|---|---|
| O_NONBLOCK | POSIX 非阻塞 I/O |
| FNONBLOCK | POSIX 非阻塞 I/O |
| O_APPEND | 在末尾保证有写操作的追加 |
| FAPPEND | 在末尾保证有写操作的追加 |
| O_SYNC | 同步写入选项 |
| FSYNC | 同步写入选项 |
| O_DSYNC | 同步写选项 (仅限文件数据)。 |
| FDATASYNC | 同步写选项 (仅限文件数据)。 |
| O_RSYNC | 读取时的同步文件属性。 |
| FREADSYNC | 读取时的同步文件属性。 |
| FASYNC | 异步 I/O |
| O_NDELAY | 非阻塞 I/O |
| FNDELAY | 非阻塞 I/O |
| O_LARGEFILE | 已启用对大型文件的访问权。 |
打开子例程的文件状态标志
以下文件状态标志可由 开 子例程访问:
| 项 | 描述 |
|---|---|
| O_DEFER | 延迟更新 |
| O_DELAY | 延迟打开 |
| 重定向 | 为直接 I/O 打开 |
Fcntl 子例程的文件描述符标志
以下文件描述符标志可由 弗纳特尔 子例程访问:
| 项 | 描述 |
|---|---|
| FD_CLOEXEC | 在执行期间关闭此文件。 |
对应于文件访问方式的文件标志值如下:
| 项 | 描述 |
|---|---|
| fread | 文件已打开以进行读取。 |
| fwrite | 文件已打开以进行写入。 |
注意:
- 除非已定义了 内核 标志,否则不能使用 FREAD 和 FWRITE 标志。
- ldfcn.h 文件还将值分配给 FREAD 和 FWRITE 选项。 如果直接或间接将 ldfcn.h 和 fcntl.h 文件一起使用,那么应该在其中一个头文件的 FREAD 和 FWRITE 选项上使用 #undef 语句。 如果不存在,那么编译器将返回有关使用重复定义的警告。
fcntl 子例程的命令值
弗纳特尔 子例程 (即,对于 弗纳特尔 子例程请求) 的 命令 值为:
| 项 | 描述 |
|---|---|
| F_DUPFD | 复制文件描述。 |
| F_GETFD | 获取文件描述标志。 |
| F_SETFD | 设置文件描述标志。 |
| F_GETFL | 获取文件状态标志和文件访问方式。 |
| F_SETFL | 设置文件标志。 |
| F_GETLK | 返回有关现有文件锁定的信息。 |
| F_GETLK64 | 返回有关现有文件锁定的信息。 |
| F_SETLK | 设置或清除文件锁定。 |
| F_SETLK64 | 设置或清除文件锁定。 |
| F_SETLKW | 设置或清除文件锁定并等待 (如果已阻止)。 |
| F_SETLKW64 | 设置或清除文件锁定并等待 (如果已阻止)。 |
| F_GETOWN | 获取描述符所有者。 |
| F_SETOWN | 设置描述符所有者。 |
套接字限制
对于套接字,以下 命令 值返回 EINVAL :
- F_SETLK
- F_SETLKW
- F_SETLK64
- F_SETLKW64
- F_GETLK
- F_GETLK64