fcntl()是干什么用的?

gsen 2004-07-17 12:22:42
初学linux下的c编程,看到fcntl()函数,然后找了一篇文章里面说:
"fcntl()用来操作文件描述词的一些特性。"
我还是不明白他是干什么用的,而且什么叫文件描述词?
谢谢
...全文
281 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
carol1980 2004-07-17
  • 打赏
  • 举报
回复
fcntl 可以用来改变文件的很多属性,如复制,获取和设置文件描述符,改变文件状态,文件加锁。

#include <fcntl.h>

int fcntl(int fildes, int cmd);
int fcntl(int fildes, int cmd, long arg);

fildes 就是要操作的文件描述符
cmd 决定对 fildes 进行什么样的操作

APUE:
fcntl 函数有五种功能:
• 复制一个现存的描述符(cmd=F_DUPFD)。—— 功能类似于 dup/dup2 但还是有些细节区别的;
• 获得/设置文件描述符标记(cmd = F_GETFD或F_SETFD)。
• 获得/设置文件状态标志(cmd = F_GETFL或F_SETFL)。
• 获得/设置异步I / O有权(cmd = F_GETOWN或F_SETOWN)。
• 获得/设置记录锁(cmd = F_GETLK , F_SETLK或F_SETLKW)。


更加基础一点的文件操作,你到这里看吧
http://www.loveunix.net/index.php?showtopic=33908&st=0
carol1980 2004-07-17
  • 打赏
  • 举报
回复
用fopen要快很多的

为什么?
xjl999 2004-07-17
  • 打赏
  • 举报
回复
用来返回文件的属性,和ioctl类似!
jumpandfly 2004-07-17
  • 打赏
  • 举报
回复
文件描述词,当一个文件打开后,系统会分配一部分资源来保存该文件的信息.以后对文件的操作就可以直接引用该部分资源了,文件描述词可以认为是该部分资源的一个索引,在打开文件时返回.fcntl是用来对文件的一些属性进行设置的,需要一个文件描述词参数.
groock 2004-07-17
  • 打赏
  • 举报
回复
/dev/hd*
/dev/sd*
...
都是文件
一且皆文件
open()
fopen()
用fopen要快很多的
incept 2004-07-17
  • 打赏
  • 举报
回复
man 2 fcntl
lwj_dxy 2004-07-17
  • 打赏
  • 举报
回复
up
carol1980 2004-07-17
  • 打赏
  • 举报
回复
在 unix 下,文件的概念是很广的

包括硬件设备,也是被映射到文件上,比较重要的象:
/dev/console
/dev/tty
/dev/null

都是同样的使用 open 打开,获得文件描述符来进行相应操作
yanedanny 2004-07-17
  • 打赏
  • 举报
回复
文件描述符除了文件外,还包括socket、管道之类的内容。

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧