1. 首页
  2. 操作系统
  3. Unix
  4. fcntl函数-鸿鹄论坛_华为认证h35-211-hcnp-access network题库

fcntl函数-鸿鹄论坛_华为认证h35-211-hcnp-access network题库

上传者: 2024-07-15 22:14:30上传 PDF文件 18.16MB 热度 11次

3.13 fcntl函数

fcntl函数可以改变已经打开文件的性质。


#include <sys types.h="">

#include <unistd.h>

#include <fcntl.h>



int fcntl(int filedes, int cmd, .../* int arg */);

fcntl.h>unistd.h>sys>

返回:若成功则依赖于cmd(见下),若出错为-1。

在本节的各实例中,第三个参数总是一个整数,与上面所示函数原型中的注释部分相对应。但是12.3节说明记录锁时,第三个参数则是指向一个结构的指针。

fcntl函数有五种功能:

  • 复制一个现存的描述符(cmd=F_DUPFD)。

  • 获得/设置文件描述符标记(cmd = F_GETFD或F_SETFD)。

  • 获得/设置文件状态标志(cmd = F_GETFL或F_SETFL)。

  • 获得/设置异步I/O有权(cmd = F_GETOWN或F_SETOWN)。

  • 获得/设置记录锁(cmd = F_GETLK, F_SETLK或F_SETLKW)。

我们先说明这十种命令值中的前七种(12.3节说明后三种,它们都与记录锁有关)。我们将涉及与进程表项中各文件描述符相关联的文件描述符标志,以及每个文件表项中的文件状态标志,见图3-1。

  • F_DUPFD复制文件描述符filedes,新文件描述符作为函数值返回。它是尚未打开的各描述符中大于或等于第三个参数值(取为整型值)中各值的最小值。新描述符与filedes共享同一文件表项(见图3-3)。但是,新描述符有它自己的一套文件描述符标志,其FD_CLOEXEC文件描述符标志则被清除(这表示该描述符在exec时仍保持开放,我们将在第8章对此进行讨论)。
用户评论