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)