IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 数据的输入输出(IO) -> 正文阅读

[系统运维]数据的输入输出(IO)

基本概念

输入:数据从内核空间流向用户空间,站在用户空间的角度来看就是将数据从内核空间读到用户空间,属于读操作,例如库函数scanf;
输出:数据从用户空间流向内核空间,站在用户空间的角度来看就是将数据从用户空间写到内核空间,属于写操作,例如库函数printf。

标准IO

特性:
1、标准C库函数
2、属于高级IO,移植性和通用性较强
3、自带缓存,用于临时存放数据,以减少操作磁盘的次数,保护硬件
4、通过文件流操作IO
注:文件流本质上是结构体指针,指向struct _IO_FILE类型的结构体;此外标准IO也是基于文件IO来实现的。
linux自带3个标准流
标准输出 stdout
使用行缓存,1k大小,其刷新条件是
1、缓存区已满
2、程序正常退出(包括main函数执行return或程序执行标准库函数exit)
3、调用fflush函数,强制刷新缓存
4、遇到换行符’\n’
标准输入 stdin
使用全缓存,4k大小,其刷新条件是
1、缓存区已满
2、程序正常退出
3、调用fflush函数,强制刷新缓存
4、关闭流
标准错误 stderr
无缓存

常用接口

#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
功能:打开文件流
参数path:文件路径
参数mode:操作模式,如下
"r"读操作,文件若存在则从文件开头读,文件不存在会报错;
"r+"读写操作,文件若存在则从文件开头读写,文件不存在会报错;
"w"写操作,文件若存在则先清空后写入,文件不存在则创建同名文件;
"w+"读写操作,文件若存在则先清空后读写,文件不存在则创建同名文件;
"a"追加写操作,文件若存在则从文件末尾写,文件不存在则创建同名文件;
"a+"追加写和读操作,文件若存在则从文件末尾写,从文件开头读,文件不存在则创建同名文件;
返回:正确返回文件流指针,异常返回NULL并设置errno值。
errno是linux通用类型错误号,其数值与对应的错误绑定,可参考/usr/include/asm-gengeric/errno-base.h文件;
#include <stdio.h>
#include <errno.h>
#include <string.h>
char *strerror(int errnum); //根据errno获取对应的错误描述
void perror(const char *s); //errno对应错误输出
例如perror("fail to open"); 等价于 fprintf(stderr, "fail to open:%s\n", strerror(errno));
int fclose(FILE *fp);
功能:关闭指定的文件流
返回:正确返回0,异常返回-1并设置errno值

写操作

int fprintf(FILE *stream, const char *format, ...);
功能:格式化输出到指定文件流,类似于
int printf(const char *format, ...); //格式化输出到标准输出流 stdout
int fputc(int c, FILE *stream);
功能:将字符输出到指定文件流
返回:正确返回字符的ascii码,异常返回-1
fputc(int c, stdout); 等价于 putchar(int c);

读操作

int fgetc(FILE *stream);
功能:从指定文件流读取一个字符
返回:正确返回字符的ascii码,异常返回-1
异常返回有以下情况
1、读到文件末尾
2、操作出现错误
因此需要用feof函数做进一步判断
int feof(FILE *stream);
功能:判断是否指向文件末尾
返回:在文件末尾时返回非0,不在文件末尾时返回0

文件IO

特性:
1、系统调用函数
2、属于低级IO,移植性较差
3、不带缓存(实质是内核缓存)
4、通过文件描述符操作IO
注:文件描述符本质上是非负整数的索引值,即数组下标,而数组成员就是文件结构体指针。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 12:08:59  更:2021-10-08 12:09:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:23:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码