模块 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
版本字符串。