嵌入式Linux编程入门学习笔记之文件IO

前置知识

  • Linux文件I/O分为系统IO和标准IO,常用于系统编程

  • 系统I/O通过文件描述符 fd 来操作文件

  • 标准I/O通过文件流 FILE* 来操作文件

  • Linux下可以使用man命令来查看使用手册

学习和使用这些API最快的途径是利用系统自带的man查看手册,查看系统IO可以用man 2 open, 查看标准I/O可以用man 3 fopen

关于linux中man 1 2 3 … 的区别 :

1、Standard commands (标准命令)
2、System calls (系统调用)
3、Library functions (库函数)
4、Special devices (设备说明)
5、File formats (文件格式)
6、Games and toys (游戏和娱乐)
7、Miscellaneous (杂项)
8、Administrative Commands (管理员命令)
9、 其他(Linux特定的), 用来存放内核例行程序的文档。

一、文件IO

1.概念

文件IO,又称系统IO,可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )定义的一组函数,不提供缓冲机制,每次读写操作都引起系统调用,核心概念是文件描述符,访问各种类型文件。

​文件I/O是采用系统直接调用的方式,因此当使用这些接口对文件进行操作时,就会立刻触发系统调用过程,即向系统内核发出请求之后,系统内核会收到执行相关代码处理的请求,决定是否将操作硬件资源或返回结果给应用程序。

2.文件描述符(fd)

  • 每个打开的文件都对应一个文件描述符。
  • 文件描述符是一个非负整数。Linux为程序中每个打开的文件分配一个文件描述符。
  • 文件描述符从0开始分配,依次递增。
  • 文件IO操作通过文件描述符来完成。

标准输入、标准输出、标准错误这三个文件分别对应的fd值就是0、1、2。

详细可看:【Linux从入门到精通】文件描述符详解

3.API

常用的系统I/O接口有:

  • open()
  • read()
  • write()
  • close()
  • lseek()

使用命令 man 2 xxxx 查看使用手册,也可以看下面这篇博客,写的挺详细的:

 【Linux学习笔记】7. Linux文件IO详解(附代码实例)

二、标准IO

1.概念

应用层C语言库函数提供了一些用来做文件读写的函数列表,叫标准IO。与系统I/O不同的是,标准I/O带有缓冲区,可以减少系统调用,提高系统效率。

2.流(stream)

的概念:就是数据的流,在程序中就是一个结构体。

流分类:文本流、二进制流,在Linux下不用考虑二者区别,但是在Windows下需要。

缓冲类型:

  • 全缓冲:当流的缓冲区无数据或者无空间时,执行IO操作(打开文件时默认为全缓冲)
  • 行缓冲:输入或输出中遇到换行符(“\n”)时,执行IO操作(与终端相关的为行缓冲)
  • 无缓冲:数据直接写入文件,不进行缓冲

在程序运行前,会自动创建3个流:stdin, stdout, stderr.

标准IO是行缓冲类型!!!

3.API

常用的标准I/O接口有:

  • fopen()
  • fread()
  • fwrite()
  • fclose()

 使用命令 man 3 xxxx 查看使用手册,详细可看:

 【Linux学习笔记】7. Linux文件IO详解(附代码实例)

 

  • 33
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值