【Linux系统编程学习】C库IO函数与系统IO函数的关系
此为黑马Linux课程笔记。
1. C标准IO函数工作流程
如图,以C库函数的fopen为例,其返回类型是FILE类型的指针,FILE类型包含很多内容,主要包含三个内容:文件描述符、文件读写指针的位置和I/O缓冲区的地址。
- 文件描述符:文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。文件描述符在Linux系统IO函数中很常用。
- 文件读写指针位置:用于控制文件的读写位置。
- 缓冲区地址:如使用C库函数fwrite()时,不是直接写到磁盘中,而是先写到缓冲区(默认大小8K)中,然后再一起写入硬盘中。因为反复写入磁盘,时间都浪费在寻道时间和旋转延迟上了,所以要一口气写入。当以下三种情况发生时,缓冲区的内容写入文件:1. fflush刷新缓冲区,2.缓冲区已满,3.正常关闭文件。如图:
2. C库IO函数与系统IO函数的关系
如图所示,使用C库函数时,C库函数会调用系统函数write,然后一步一步向下调用。
【Linux系统编程学习】C库IO函数与系统IO函数的关系相关推荐
- linux系统编程学习_(2)进程控制-- fork函数、exec函数族、回收子进程--孤儿进程僵尸进程、wait函数
linux系统编程学习_(2)进程控制-- fork函数.exec函数族.回收子进程–孤儿进程僵尸进程.wait函数 进程控制 fork()函数 创建一个子进程. pid_t fork(void); ...
- linux线程并不真正并行,Linux系统编程学习札记(十二)线程1
Linux系统编程学习笔记(十二)线程1 线程1: 线程和进程类似,但是线程之间能够共享更多的信息.一个进程中的所有线程可以共享进程文件描述符和内存. 有了多线程控制,我们可以把我们的程序设计成为在一 ...
- 嵌入式Linux系统编程学习之二常用命令
嵌入式Linux系统编程学习之二常用命令 文章目录 嵌入式Linux系统编程学习之二常用命令 前言 一.常用命令 1.su(用户切换) 2.useradd(添加用户) 3.passwd(修改密码) 4 ...
- 嵌入式Linux系统编程学习之一目录结构
嵌入式Linux系统编程学习之一目录结构 文章目录 嵌入式Linux系统编程学习之一目录结构 前言 一.Linux目录结构 前言 Linux目录结构 一.Linux目录结构 /bin:存放Linux的 ...
- 嵌入式系统开发学习步骤(Linux高级编程学习顺序)
2019独角兽企业重金招聘Python工程师标准>>> 嵌入式系统开发学习步骤(Linux高级编程学习顺序) 1.Linux 基础 安装Linux操作系统 Linux文件系统 Lin ...
- Linux系统编程 25 动态库和静态库 理论对比
Linux系统编程 25 动态库和静态库 理论对比 库分为两类 1.静态库 2.动态库(共享库) 静态库 是在可执行程序运行前就已经加入到执行码中, 成为执行程序的一部分 共享库(动态库) 执行程序启 ...
- I.MX6U嵌入式Linux应用编程学习
I.MX6U嵌入式Linux应用编程学习 目录 I.MX6U嵌入式Linux应用编程学习 〇.备忘 0.0 本文大写字母缩写说明 0.1 C编译 0.2 NFS与文件夹挂载 一.应用编程概念 1.1 ...
- 《Linux Shell编程学习笔记之一》
<Linux Shell编程学习笔记之一> 前言 由于自己一直在Windows上面编程,用linux用的比较少,学习linux还是本科大二学的一点点知识.因此自己就准备花点时间来熟悉下li ...
- Linux shell编程学习
Linux shell编程学习 shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令.这点与Windows的命令提示符类似,但Linux shell的功能更加强 ...
- Linux Shell编程学习笔记(3)
Linux Shell编程学习笔记(2015-7-19) 分类:linux shell 一:位置参数和特殊变量 什么是位置参数? 位置参数也叫位置变量,是运行shell脚本程序时,命令行she ...
最新文章
- 基于边缘云的机器流量管理技术实战
- BZOJ 3053 The Closest M Points
- hbaseRegion的划分
- matlab 中.*和* 区别
- 103规约测试软件,Protocoltester(国电南自103规约调试软件)
- 用印审批移动办公用户手册
- 关于射频同轴连接器的功率容量探讨
- CashFiesta 攻略
- python算法 之 猜词游戏
- java retained size_使用MAT时的Shallow Size和 Retained Size的区别
- sketchup转stl_求助,如何将skp转换成stl实现3d打印?
- 云虚拟主机☀️利用FileZilla,使用FTP协议给阿里云虚拟主机上传、下载文件
- imx6芯片通过EIM总线外扩多路sja1000 CAN控制器
- java版 我的世界 win10_我的世界win10版
- 如何删除卸载苹果mac电脑应用软件没有残留垃圾
- 匹兹堡大学申请条件计算机科学,匹兹堡大学计算机科学硕士专业入学要求及费用...
- java毕业设计校园内推系统mybatis+源码+调试部署+系统+数据库+lw
- 一步步教你微信怎么搭建小程序
- 注册会计师考试时可用计算机吗,2019注册会计师考试:cpa机考系统计算器你会用吗?...
- 常见的wait等待事件及处理
热门文章
- 如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境 [转]
- node模块函数图解
- -bash: belts.awk: command not found
- Visual Studio Team System 2008 Team Suite 简体中文正式版
- python列表字符串转数字_python 将列表中的字符串转为数字
- php网页的注册界面设计,HTML开发博客之注册页面设计(一)
- 荣耀鸿蒙系统开机动画,荣耀赵明:鸿蒙系统首发设备欲屏蔽开机广告
- 华为鸿蒙出来正当时,关于华为鸿蒙操作系统,中兴率先表态
- java web 保护_java web项目请求控制及简单漏洞防范
- python绘制散点图的函数_python matplotlib更新函数的散点图