Linux —— 基础IO - 自己实现libc库

目录

[8.6 简单设计一下libc库](#8.6 简单设计一下libc库)

[8.6.1 Makefile:](#8.6.1 Makefile:)

[8.6.2 mystdio.h](#8.6.2 mystdio.h)

[8.6.3 mystdio.c](#8.6.3 mystdio.c)

[8.6.3.1 my_fopen() 的实现:](#8.6.3.1 my_fopen() 的实现:)

[8.6.3.2 my_fflush() 的实现:](#8.6.3.2 my_fflush() 的实现:)

[8.6.3.3 my_fwrite() 的实现:](#8.6.3.3 my_fwrite() 的实现:)

[8.6.3.4 my_fclose() 的实现:](#8.6.3.4 my_fclose() 的实现:)

[8.6.4 test.c文件:](#8.6.4 test.c文件:)

[8.6.5 test.c 文件修改:](#8.6.5 test.c 文件修改:)

[8.6.5.1 追加的实现:](#8.6.5.1 追加的实现:)

[9. 总结一下:](#9. 总结一下:)


8.6 简单设计一下libc库

只希望在自己写的libc库明白:刷新方式的理解!!

8.6.1 Makefile:

8.6.2 mystdio.h

8.6.3 mystdio.c

打开文件就是在C语言当中为你创建file对象:

8.6.3.1 my_fopen() 的实现:
8.6.3.2 my_fflush() 的实现:
8.6.3.3 my_fwrite() 的实现:
8.6.3.4 my_fclose() 的实现:

8.6.4 test.c文件:

我们在设置默认的刷新方式设置为FLUSH_LINE行刷新。

又在测试代码中的字符串增加了一个 '\n'

8.6.5 test.c 文件修改:

此时的运行结果:

默认是行刷新,将 '\n'去掉:

运行结果:

写的默认规则不是按行刷新的嘛!!将 '\n' 去掉了,写写写,将数据统一添加到MyFILE的缓存区中,刷新条件不满足,进程结束,统一将内容刷新出来。这个就叫做缓冲区!!!

8.6.5.1 追加的实现:

运行结果:(成功)

9. 总结一下:

基础IO的专题是:

fd,全部都在说,一个被打开的文件和进程如何如何!!!!

相关推荐
zh路西法7 小时前
【navigation2全局路径更新频率修正】行为树框架的巧妙利用
linux
苏宸啊8 小时前
IPC管道
linux·c++
bush48 小时前
嵌入式linux学习记录十,定时器
linux·嵌入式
峥无8 小时前
Linux进程信号:从基础概念到内核底层原理
linux·运维·服务器·信号处理
广州灵眸科技有限公司8 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) 开发(编译)方式说明
linux·服务器·单片机·嵌入式硬件·电脑
北山有鸟9 小时前
用开发板的.config替换ubuntu中内核源码目录的.config
linux·运维·ubuntu
jcbut9 小时前
离线安装dify 1.7
linux·运维·dify
云计算磊哥@10 小时前
运维开发宝典024-Linux云计算运维入门阶段总结
linux·运维·运维开发
江华森10 小时前
《Linux内核技术实战:从Page Cache到CPU调度的深度解构》博客大纲(26讲精编版)
linux
知无不研10 小时前
对套接字的深入理解
linux·服务器·网络·c++·socket·网络套接字