Fcntl - 加载 C Fcntl.h 定义
use Fcntl;
use Fcntl qw(:DEFAULT :flock);
此模块只是 C fcntl.h 文件的翻译。与需要翻译的旧版 fcntl.ph 文件的机制不同,此模块使用 h2xs 程序(请参阅 Perl 源代码分发)和你的本机 C 编译器。这意味着它更有可能获得正确的数字。
只有 #define
符号会得到翻译;你仍然必须正确打包你自己的参数,以便作为锁定函数等的 args 传递。
默认情况下,你的系统的 F_* 和 O_* 常量(例如,F_DUPFD 和 O_CREAT)以及 FD_CLOEXEC 常量会导出到你的命名空间中。
你可以使用标签 :flock
请求提供 flock() 常量(LOCK_SH、LOCK_EX、LOCK_NB 和 LOCK_UN)。请参阅 Exporter。
出于兼容性原因,您可以通过使用标签 :Fcompat
来请求提供旧常量 (FAPPEND、FASYNC、FCREAT、FDEFER、FEXCL、FNDELAY、FNONBLOCK、FSYNC、FTRUNC)。对于新应用程序,建议使用这些常量的较新版本 (O_APPEND、O_ASYNC、O_CREAT、O_DEFER、O_EXCL、O_NDELAY、O_NONBLOCK、O_SYNC、O_TRUNC)。
为了便于使用,还提供了 SEEK_* 常量(用于 seek() 和 sysseek(),例如 SEEK_END)和 S_I* 常量(用于 chmod() 和 stat())以供导入。它们可以单独导入,也可以使用标签 :seek
和 :mode
导入。
请参阅您的本机 fcntl(2)、open(2)、fseek(3)、lseek(2)(分别等于 Perl 的 seek() 和 sysseek())和 chmod(2) 文档,以了解在您的系统中实现了哪些常量。
请参阅 perlopentut 以了解 O_* 常量与 sysopen() 的用法。
请参阅 perlfunc 中的“seek” 和 perlfunc 中的“sysseek” 以了解 SEEK_* 常量。
请参阅 perlfunc 中的“stat” 以了解 S_I* 常量。