1637_fgets函数的功能

news2024/11/28 2:51:38

         全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         没想到分析一个函数的实现会这么麻烦,中间利用的一系列的库函数以及内核接口我全都不熟悉。但是,这次的这个函数应该是之前C语言的基本教程中存在的,只是我这么多年来一直做嵌入式软件的开发可能这方面不敏感,看到类似的功能章节会直接跳过。

1. 这一个函数跟之前看到的函数的分类都不相同,是一个3p的分类。但是应该是一个库函数的大概分类是错不了的。

2. 这一份文档的风格跟之前看到的几份linux的接口文档的风格不是很相同,开篇还专门写了POSIX接口。其实,到了最后一页这个谜题也就随之解开了。

3. 我其实是查找的Linux的接口文档,其实这个网站也是Linux的网站。但是,这里还是说了这个接口在linux上的实现可能跟这里的描述不同。其实最主要的原因还是最后说的文档由来方式决定的。

4. 这个函数的功能是根据一个数据流获取一个字符串,而这个字符串的获取结束有几种条件,比如说到了指定的字节数或者换行符亦或者是文件的结束。他的返回值可能是字符串也可能是NULL。如果,没有到结束符,那么 会读取n-1个字节。如果是读取到了文件的末尾,那么返回值会是NULL。

5. 这个接口在设计的时候是符合标准C的规范的。

6. 文件的属性中,有一个最后访问时间时间戳的属性。这个接口会改变文件的这个属性信息,这里也给出来了可能改变这个属性信息的其他接口。

1. 这个文档的风格跟前面看到的几个接口的文档风格的确是不同,里面的内容详实程度要好很多。

2. 这里提到了一个只是概念:一行所能够允许的最多的字符数是16384个,这个是linux定义的一个最大限制。

3. 示范代码的意图很容易理解,但是这里涉及到了一个新的接口我是不熟悉的。不过,从中可以看得出来代码设计的严谨性。先前我接触过的软件设计看起来路子比较粗犷,在细节上没有考虑这么多安全等方面的因素。后续可以在我的工作领域一起参考学习一下。

         这一个给出来了这个文档的由来,从这里看这个接口的确是有着很浓厚的unix文化基因。

         这样,结合这一次的接口分析以及之前看到的其他的接口内容就很容易理解上面的这个函数的设计了。上面的这个函数的设计其实是从标准输入读取一个字符串,最多读取nbuf-1个字符。读取之后的内容,自然可以通过传入的指针来进行访问处理。如果这个函数返回值是-1,那么代表处理的过程中出错了。如果处理的过程没有任何问题,那么返回0。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vscode下载与使用

1.vscode下载 官网下载地址:Download Visual Studio Code - Mac, Linux, Windows下载太慢,推荐文章:解决VsCode下载慢问题_vscode下载太慢_迷小圈的博客-CSDN博客下载太慢,推荐下载链接:https://vscode.cdn.azure.cn/s…

JavaScript Array(数组)对象

数组对象的作用是:使用单独的变量名来存储一系列的值。参数参数 size 是期望的数组元素个数。返回的数组,length 字段将被设为 size 的值。参数 element ...; elementn 是参数列表。当使用这些参数来调用构造函数 Array() 时,新创建的数组的元…

SEO技术风口来了|SEO能否抓住全球约93%的网络用户?

开篇词作者/出品人 | 美洽 SEO 流量专家 白桦为什么要做一个 SEO 专栏?在一部分人眼中,SEO(搜索引擎优化)已经是老掉牙的玩意儿,在这个信息爆炸的年代,它似乎已经无法承担吸引流量的主要作用。但&#xff…

2023年3月北京/广州/杭州/深圳数据治理工程师认证DAMA-CDGA/CDGP

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

代码随想录算法训练营第二十四天 | 理论基础、 77. 组合

打卡24天,今天学第七章回溯算法,之前已经学过一遍,现在学第二遍,加油。 今日任务 理论基础77.组合 理论基础 什么是回溯 递归的副产物,有递归就会有回溯 红色的箭头就是回溯 回溯的效率 回溯的本质是穷举&#xff…

ROS通信机制

参考: bilibiliAutolabor官方 回调函数:! 由外部中断激发而执行的函数,函数执行的时间不由函数本身控制,而是由外部激发 1、话题通信 ​ publisher发布者,和subscriber订阅者通过topic相互连接&#xf…

设计模式5——自定义Spring框架

1、Spring核心功能结构 Spring大约有20个模块,由1300多个不同的文件构成。这些模块可以分为:核心容器、AOP和设备支持、数据访问与集成、Web组件、通信报文和集成测试等。下面是Spring框架的整体架构图: 核心容器由beans、core、context 和 …

Vue脚手架的安装(保姆级教程)

Vue脚手架的安装(保姆级教程) 文章目录Vue脚手架的安装(保姆级教程)1.下载vscode2.node下载5.Vue脚手架的安装6.创建Vue项目7.项目的运行1.下载vscode vscode下载地址 2.node下载 node下载 1.打开cmd node -vnpm -v2.在node的…

linux入门---vim的配置

这里写目录标题预备知识如何配置vimvim一键配置预备知识 在配置vim之前大家首先得知道一件事就是vim的配置是一人一份的,每个用户配置的vim都是自己的vim,不会影响到其他人,比如说用户xbb配置的vim是不会影响到用户wj的,虽然不同…

开源写作平台WriteFreely(折腾篇)

设置向导 除了直接修改 config.ini 之外,你还可以进入容器用命令行进行设置 在 SSH 客户端执行下面的命令 # 生成 config.ini docker exec -it writefreely ./writefreely --config也可以通过群晖的 终端机 一步一步跟着填入就可以了,但是需要说明的是…

Zhong__Celery基本使用详解

时间:2023.03.10环境:python3/centos/redis目的:演示celery基本使用的详细案例说明:python依赖的版本以requirement.txt文件为测试基准 不同版本可能存在差异作者:Zhong简介简介及概念介绍部分不会很详细 主要看demo项…

【HTTP协议与Web服务器】

HTTP协议与Web服务器浏览器与服务器通信过程HTTP的请求报头HTTP请求报头结构HTTP的请求方法HTTP应答报头HTTP应答报头结构应答状态web服务器的c语言实现浏览器与服务器通信过程 浏览器与Web服务器再应用层通信使用的是HTTP协议,而HTTP协议在传输层使用的是TCP协议。…

深度学习必备知识——模型数据集Yolo与Voc格式文件相互转化

在深度学习中,第一步要做的往往就是处理数据集,尤其是学习百度飞桨PaddlePaddle的小伙伴,数据集经常要用Voc格式的,比如性能突出的ppyolo等模型。所以学会数据集转化的本领是十分必要的。这篇博客就带你一起进行Yolo与Voc格式的相互转化&…

数据库系统概论

文章目录前言基础篇:1-5章第 1 章 绪论1.1 数据库系统概述1.2 数据模型1.3 数据库系统的结构1.4 数据库系统的组成1.5 小结第 2 章 关系数据库1.关系模型1.1 关系数据结构1.2 关系完整性约束实体完整性、参照完整性、用户定义完整性2.关系代数8种关系代数运算符并 ∪…

「媒体邀约」如何选择适合的媒体公关,媒体服务供应商

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 每天胡老师也会接到大量关于媒体方面的询问,胡老师也都一一的很耐心的进行了解答,也都很详细的做了媒体规划和媒体传播方案,但有的朋友还是很犹豫&…

关于 @Aspect 注解的使用

一、Spring AOPAOP(Aspect Oriented Programming) 是一种面向切面的编程思想。面向切面编程是将程序抽象成各个切面,即解剖对象的内部,将那些影响了多个类的公共行为抽取到一个可重用模块里,减少系统的重复代码,降低模块间的耦合度…

Hive小结

Hive的定义hive是一个建立在Hadoop上的开源数据仓库软件,可以将结构化的数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为hive查询语言(HQL),用于访问和分析存储在Hadoop文件中的大型数…

Uipath Excel 自动化系列12-InsertDeleteSheet(新增删除Sheet)

活动描述 Insert Sheet 新增Sheet:在 Excel 文件中插入工作表,该活动需与Use Excel File 活动选择的 Excel 文件一起使用。 Delete Sheet 删除Sheet:从 Excel 文件中删除指定工作表,该活动需与Use Excel File 活动选择的 Excel 文件一起使用。 使用如下图: Inser…

【React教程】一、React简介

一、React简介 React是一个用于构建用户界面的JavaScript库,它是Facebook的内部项目,用来架设Instagram的网站,并于2013年5月开源。React主要用于构建Ul,很多人认为React 是 MVC 中的 V(视图)。由于拥有较高的性能&…

计算机组成原理——计算机系统概述

文章目录计算机系统的组成计算机硬件冯诺依曼结构计算机的功能部件计算机软件系统软件和应用软件三个级别的语言计算机的性能指标字长数据通路宽度主存容量运算速度计算机系统的组成 计算机系统由硬件系统和软件系统组成: 硬件是指有形的物理设备,是计…