【lesson34】基础IO之引入fd(文件描述符)

文章目录

  • 基础IO要讲的知识点介绍
  • 引入fd(文件描述符)

基础IO要讲的知识点介绍

1.复习一下C语言的接口
2.直接使用系统接口
3.分析系统接口的细节,引入fd(文件描述符)
4.fd的周边问题(fd的理解、fd和file的关系、fd分配规则、fd重定向…)

引入fd(文件描述符)

我们在前面一直在使用fd那么fd到底是什么呢?
先从数字层面理解,我们知道每打开一个文件就会有fd,那么这些fd到底是多少呢?
来一段代码
【lesson34】基础IO之引入fd(文件描述符)_第1张图片
运行代码:
【lesson34】基础IO之引入fd(文件描述符)_第2张图片
我们看到fd是一串连续的数字。
但是现在有些问题?
问题一:0、1、2去哪了?
问题二:为什么是这样的数据?

问题一答案:
因为系统默认打开了三个文件:他们占用了0、1、2
stdin 0
stdout 1
stderr 2
证明:
向stdout输出数据
【lesson34】基础IO之引入fd(文件描述符)_第3张图片
运行代码
【lesson34】基础IO之引入fd(文件描述符)_第4张图片
我们看到程序,确实向(显示器)标准输出输出了数据。

从stdin读取数据。
【lesson34】基础IO之引入fd(文件描述符)_第5张图片
read的返回值,为实际读取到的内容个数。
【lesson34】基础IO之引入fd(文件描述符)_第6张图片
我们看到确实从0中读取到了数据。

我们知道C语言接口是返回的FILE
那么FILE是什么是结构体!

FILE是C标准库提供的一般内部有多种成员
从之前我们又学到C文件库函数内部一定要调用系统接口的!

那么在系统角度是认FILE还是认fd只认fd
所以FILE结构体里封装了fd

【lesson34】基础IO之引入fd(文件描述符)_第7张图片
证明:
代码
【lesson34】基础IO之引入fd(文件描述符)_第8张图片
运行代码:
【lesson34】基础IO之引入fd(文件描述符)_第9张图片

你可能感兴趣的:(linux,基础IO,Linux,c语言)