文件IO(一)

文件IO

  • 把程序暂存在内存的数据,存储到本地外存上

文件的分类

在Linux系统下,文件共分为7类
- 普通文件
d 目录文件
p 管道文件
l 链接文件
b 块设备文件
c 字符设备文件
s 套接字(Socket)文件 跨主机之间的通信

在文件IO下,文件分类

按存储的内容分

文本文件:存储的是数据的阿斯克码(0~127),EOF(end of file,-1)
二进制文件:存储的是数据在内存上的原样存储
文本文件,在存储的时候,需要数据和阿斯玛转换,一般存储数据量比较大的数据,最终结果
二进制文件,一般存储中间变量

在这里插入图片描述
在这里插入图片描述

按照操作分

带缓冲区操作的文件:标准IO,内存上的缓冲区,库函数
不带缓冲区操作的文件:文件IO

在这里插入图片描述
在这里插入图片描述

标准IO和文件IO的区别

标准IO
1.标准IO由ANSI C标准定义, 库函数提供的
2.跨平台性,移植性较好
3.有缓冲区的操作,标准IO的效率比文件IO的效率高
4.一般以文件流指针作为操作依据
文件IO
1.由POSIX定义,操作系统提供的系统调用提供的
2.移植性差
3.效率较低
4.一般以文件描述符作为操作依据

在这里插入图片描述

系统调用和库函数的区别

  1. 提供者:
  • 系统调用:由操作系统内核提供。它们是内核暴露给应用程序的接口,用于请求内核执行某些操作,如
    文件操作、进程管理、内存管理等。
  • 库函数:由标准库或第三方库提供。这些函数通常是对系统调用的封装,也可能包含其他功能,如数学
    运算、字符串处理等。
  1. 运行时间:
  • 系统调用:属于机器时间,执行时通常涉及用户态到内核态的切换,这通常比用户态内的操作更耗时。
  • 库函数:属于用户时间,在用户态执行,不涉及上下文切换,因此通常更快。
  1. 运行空间:
  • 系统调用:在内核空间执行,这是操作系统保护的区域,用于执行特权操作。
  • 库函数:在用户空间执行,这是应用程序运行的地方。
  1. 效率:
  • 系统调用:由于涉及上下文切换和内核态执行,通常比库函数调用更耗时。
  • 库函数:在用户态执行,没有上下文切换的开销,因此通常更高效。
  1. 移植性:
  • 系统调用:依赖于特定的操作系统和内核,因此通常不易移植到其他操作系统。
  • 库函数:如果遵循标准库规范,通常可以在多种操作系统上运行,具有较好的移植性。
  1. 返回值:
  • 系统调用:通常返回特定的错误码或状态信息,用于指示调用是否成功以及可能的错误原因。
  • 库函数:返回值取决于具体的函数,可能返回计算结果、指针、状态码等。
  1. 功能的复杂程度:
  • 系统调用:通常执行底层的、原子性的操作,如打开文件、创建进程等。
  • 库函数:可能执行更复杂的任务,这些任务可能涉及多个系统调用或其他库函数的组合。
  1. 功能能否重写:
  • 系统调用:作为操作系统的一部分,通常不能由用户重写。
  • -库函数:用户可以根据自己的需要重写库函数,或者使用不同的库实现相同的功能。
    总的来说,系统调用提供了与操作系统内核交互的接口,而库函数则为用户提供了更高级、更易于使用的功能。
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值