模块 Fcntl

Fcntl 加载系统 <fcntl.h> C 头文件中定义的常量,并与 fcntl(2) 和 open(2) POSIX 系统调用一起使用。

要执行 fcntl(2) 操作,请使用 IO::fcntl。

要执行 open(2) 操作,请使用 IO::sysopen。

可用操作和常量的集合取决于特定的操作系统。下面列出的某些值可能在您的系统上不受支持。

有关完整详细信息,请参阅您的 fcntl(2) 手册页。

以只写方式打开 /tmp/tempfile,如果该文件不存在则创建该文件

require 'fcntl'

fd = IO.sysopen('/tmp/tempfile',
                Fcntl::O_WRONLY | Fcntl::O_EXCL | Fcntl::O_CREAT)
f = IO.open(fd)
f.syswrite("TEMP DATA")
f.close

获取文件 s 上的标志

m = s.fcntl(Fcntl::F_GETFL, 0)

f 上设置非阻塞标志,以及 m 中现有的标志。

f.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK|m)

常量

FD_CLOEXEC

close-on-exec 标志的值。

F_DUP2FD

它是 FreeBSD 特有的常量,等效于 dup2 调用。

F_DUP2FD_CLOEXEC

它是 FreeBSD 特有的常量,其作用类似于 F_DUP2FD,但会额外设置 FD_CLOEXEC 标志。

F_DUPFD

将文件描述符复制到大于或等于该参数的最小未使用文件描述符。

已复制文件描述符的 close-on-exec 标志已设置。(如果可用,Ruby 内部使用 F_DUPFD_CLOEXEC 以避免竞争条件。如果 F_DUPFD_CLOEXEC 不可用,则使用 F_SETFD。)

F_GETFD

读取文件描述符的 close-on-exec 标志。

F_GETFL

获取文件描述符标志。这将是一个或多个 O_* 标志。

F_GETLK

确定文件的给定区域是否被锁定。这使用 F_*LK 标志之一。

F_GETPIPE_SZ

返回(作为函数结果)fd 引用的管道的容量。

F_RDLCK

文件区域的读取锁

F_SETFD

设置文件描述符的 close-on-exec 标志。

F_SETFL

设置文件描述符标志。这将是一个或多个 O_* 标志。

F_SETLK

获取文件区域的锁。这使用 F_*LCK 标志之一。

F_SETLKW

获取文件区域的锁,必要时等待。这使用 F_*LCK 标志之一

F_SETPIPE_SZ

将 fd 引用的管道的容量更改为至少 arg 字节。

F_UNLCK

删除文件区域的锁

F_WRLCK

文件区域的写入锁

O_ACCMODE

提取读/写标志的掩码

O_APPEND

以追加模式打开文件

O_CREAT

如果文件不存在则创建文件

O_EXCL

O_CREAT 一起使用,如果文件存在则失败

O_NDELAY

以非阻塞模式打开文件

O_NOCTTY

打开 TTY,而不会使其成为控制 TTY

O_NONBLOCK

以非阻塞模式打开文件

O_RDONLY

以只读模式打开文件

O_RDWR

以读写模式打开文件

O_TRUNC

打开时截断文件

O_WRONLY

以只写模式打开文件。

VERSION

版本字符串。