Chinaunix首页 | 论坛 | 博客
  • 博客访问: 912407
  • 博文数量: 299
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2493
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-21 10:07
个人简介

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

分类: LINUX

2014-07-03 16:34:00

一、fcntl函数

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

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

 

2.主要功能:

a.复制一个现有的描述符

F_DUPFD:新文件描述符作为函数值返回,大于或者等于第三个参数。新描述符与filedes共享一个文件表项。但是新描述符有自己的文件描述符标志。其文件描述符标志FD_CLOSEXEC文件描述符标志被清除。在exec的时候保持有效。

 

b.获得/设置文件描述符标记


F_GETFD:filedes文件描述符标志作为函数值返回。

F_SETFD:对于filedes设置文件描述符标志。新标志按第三个参数设置。

 


c.获得/设置文件状态标志


F_GETFL:filedes文件状态标志作为函数返回。对于读写由于不是各占一位,要判断必须和O_ACCMODE进行与运算再比较。

(通常只需要 val&O_APPEND )

F_SETFL:将文件标志设置为第三个参数的值。不可更改读写,只能更改其他属性。

 


d.获得/设置一部I/O所有权

e.获得/设置记录锁

 

二、ioctl

int ioctl(int fildes, int request, ... /* arg */);

1.ioctl是I/O操作的杂物箱,不能用其他函数表示的I/O操作通常都能用ioctl表示。终端I/O是ioctl用的最多的地方。

 

2.每个设备驱动程序都可以定义自己的ioctl。系统则为不同类别的设备提供通用的ioctl。

阅读(1724) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

tianyashuibin2014-07-03 16:35:48

fcntl可以改变已经打开的文件的性质;

ioctl是io操作的杂货箱,不能用其他函数表示的io操作通常都能用ioctl表示。中断io是其使用最多的地方。