文件描述符

本文详细阐述了Linux内核中struct file结构及其作用,解释了文件描述符的概念与用途,包括如何获取文件流描述符及与流相连接的方法。重点介绍了ANSIC库IO函数对POSIX IO函数的封装,以及在用户空间如何管理和操作文件流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 对于内核:
    Linux在内核源文件/usr/src/kernel/`uname -r`/include/linux/fs.h中定义了struct file结构是用来保存打开文件基本信息的。
 对于用户空间来说:
    任何打开的文件都将被分配一个唯一非负整数,用于标识该打开文件,该值即为文件描述符,它是一个大于等于0的整数。在任何进程运行时默认都已经打开了三个流对象和它们的文件描述符:stdin:0,stdout:1,stderr:2。
以后打开文件的文件描述符的值一般选用末使用的最小值。在用户空间要想获取文件描述符,可以使用函数:extern int fileno(FILE *__stream);
             

  由以上可知,ANSIC库IO函数其实是对POSIX IO函数的封装,在其基础上加了流的概念,并在用户空间申请了流资源。

  (1)获取文件流描述符:
  extern int fileno(FILE *__stream);
  (2)将文件流描述符与一个流相连接:
  extern FILE *fdopen(int __fd, __const char * __modes);
       如果失败,则返回NULL;成功则返回流对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值