fcntl函数

#include <fcntl.h>

int fcntl(int fd,int cmd,.../*int arg */)

 

fcntl 的第三个参数是一个整数 或者 一个指向结构体的指针(用于记录锁)

fcntl函数有5中功能:

1 复制一个已有的操作符(cmd=F_DUPFD或F_DUPFD_CLOEXEC)

  F_DUPFD 复制文件描述符fd。新文件的描述符作为函数返回值。它是尚未打开的新描述符与fd共享同一文件表项。但是,新描述符有它自己的一套文件描述符标志,其FD_CLOEXEC 文件描述符的标志被清除。指标是该描述符在exec时保持有效。

  F_DUPFD_CLOEXEC 复制文件描述符,设置与新描述符关联的FD_CLOEXEC文件描述符标志的值,返回新文件描述符。

2 获取/设置文件描述符标志(cmd=F_GETFD或者F_SETFD)

  当前只定义了一个文件描述符标志FD_CLOEXEC。现有的与文件描述符有关的程序并不使用常量FD_CLOEXEC,而是将此标志设置为0(系统默认,在exec时不关闭)或1(在exec时关闭)。

3 获取/设置文件状态标志(cmd=F_GETFL或F_SETFL)

  文件状态标志

  O_RDONLY 

  O_WRONLY

  O_RDWR

  O_EXEC  只执行打开

  O_SEARCH  只搜索打开目录

  O_APPEND  追加xie

  O_NONBLOCK  非阻塞模式

  O_SYNC  等待写完成(数据和属性)

  O_DSYNC  等待写完成(数据)

  O_RSYNC  同步读和写

  访问模式的5种方式并不各占1位,这5个值互斥,一个文件的访问方式只能取这5个值之一。因此必须用屏蔽字O_ACCMODE去的访问方式位,然后将结果与这5个值的每一个相比较。

  4获取/设置异步I/O所有权(cmd=F_GETOWN或F_SETOWN)

  获取当前接收SIGIO和SIGURG信号的进程ID或进程组ID。

  设置接收SIGIO和SIGURG信号的进程ID或进程组ID。正的arg指定一个进程ID,负的arg表示等于arg绝对值的一个进程组ID。

  5获取/设置记录锁(cmd=F_GETLK   F_SETLK或F_SETLKW)。

 

  

 

转载于:https://www.cnblogs.com/hehedaxiaxiaoming/p/7804988.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值