module Fcntl
Fcntl 加载了系统中 C 头文件 <fcntl.h> 中定义的常量,这些常量用于 POSIX 系统调用 fcntl(2) 和 open(2)。
要执行 fcntl(2) 操作,请使用 IO::fcntl。
要执行 open(2) 操作,请使用 IO::sysopen。
可用的操作和常量集合取决于具体的操作系统。下面列出的一些值可能在您的系统上不受支持。
有关完整的详细信息,请参阅您的 fcntl(2) man 页面。
以只写模式打开 /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)
Constants
- FD_CLOEXEC
-
close-on-exec 标志的值。
- F_ALLOCATEALL
-
macOS 特定的标志,与
F_PREALLOCATE一起使用,用于分配所有连续空间或不分配任何空间。 - F_ALLOCATECONTIG
-
macOS 特定的标志,与
F_PREALLOCATE一起使用,用于分配连续空间。 - F_ALLOCATEPERSIST
-
macOS 特定的标志,与
F_PREALLOCATE一起使用。分配在调用 close 时不会被释放的空间。 - 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_PEOFPOSMODE
-
macOS 特定的标志,与
F_PREALLOCATE一起使用。从文件的物理末尾分配。 - F_PREALLOCATE
-
macOS 特定的标志,用于预分配文件空间。
- 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_VOLPOSMODE
-
macOS 特定的标志,与
F_PREALLOCATE一起使用。从卷偏移量分配。 - 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
-
版本字符串。