模块 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)

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

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