fcntl.h 文件

用途

定义文件控制选项。

描述

/usr/include/fcntl.h 文件定义可以为 fcntl 子例程的 CommandArgument 参数以及 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 文件已打开以进行写入。
注意:
  1. 除非已定义了 内核 标志,否则不能使用 FREADFWRITE 标志。
  2. ldfcn.h 文件还将值分配给 FREADFWRITE 选项。 如果直接或间接将 ldfcn.hfcntl.h 文件一起使用,那么应该在其中一个头文件的 FREADFWRITE 选项上使用 #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