注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

多多的爹

 
 
 

日志

 
 

读程序,学习Linux编程(三十七)  

2010-09-05 20:37:05|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

4.5. fcntl

#include

#include

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

在前面讲文件锁的时候提到过fcntl,其实fcntl的作用很多,总结一下有五种功能。返回值为-1表示出错,成功返回其它值,与具体功能相关,下面是这五种功能的具体内容:

1. 复制一个现存的描述符(cmd=F_DUPFD),功能则返回值是文件描述符:

复制时不指定文件描述符,则类似于dup:

dup(filedes);

等同于

fcntl(filedes, F_DUPFD, 0);

复制时指定文件描述符,则类似于dup2,只是dup2是一步操作,具有原子性:

dup2(filedes, filedes2);

等同于

close(filedes2);

fcntl(filedes, F_DUPFD, filedes2);

2. 获得/设置文件描述符标记(cmd=F_GETFD或F_SETFD),成功返回相应标志:

主要用来获得/设置FD_CLOEXEC这一个标记。FD_CLOEXEC表示exec时文件是打开还是关闭状态,默认为0,不关闭。

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

可以修改open文件时的标志:

O_RDONLY

只读打开

F_GETFL

三个标志位互斥,先用O_ACCMODE屏蔽其它关键字,再一一比较

O_WRONLY

只写打开

F_GETFL

O_RDWR

读/写打开

F_GETFL

O_APPEND

写时添加至文件尾

F_GETFL

F_SETFL

O_NONBLOCK

非阻塞方式

F_GETFL

F_SETFL

O_SYNC

等待写完成

F_GETFL

F_SETFL

O_ASYNC

异步I/O

F_GETFL

F_SETFL

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

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

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

  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017