Linux系统编程1标准IO - sysio系统调用IO 与 标准IO概述

学习自李慧琴老师


  1. sysio系统调用IO(文件IO)
  2. stdio 标准IO

一 sysio系统调用IO(文件IO):

kernel为用户提供的一组函数,用于让我们能对话kernel。所以我们可以通过系统调用IO 直接对话kernel。

思考:既然系统调用IO 是kernel 提供的,那么不同的系统,他们的kernel 可能是不一样的,比如Linux 系统和 Windows 系统,所以他们提供的系统调用IO也是不一样的,这就给我们程序员造成了困扰,因为如果一个需求跨平台实现,因为每个系统提供的系统调用IO 不同,导致不同的平台分别实现一遍我们的程序是很头疼的,所以针对不同平台的差异,就推出了标准IO。

二 stdio 标准IO

标准IO 是依赖于系统调用IO 来实现的
如 printf(),他就是我们标准IO 中的一个,我们在使用 printf()的时候,不会去考虑具体的环境与平台,这是因为标准IO 是调用了 各个平台的系统调用IO 从而实现了与kernel 的交互。标准IO 推出来后,各个系统都要支持标准IO ,如标准IO 要调用 打印 打开 关闭 等操作,那么不论当前平台系统怎么做,不论他用什么系统调用IO 去支撑标准IO的对应功能,一定要实现对应功能。所以我们不论在什么系统,都可以使用标准IO 。

所以stdio 是 依赖于 sysio 来实现的,但是不同系统对标准IO 的支持是不一样的,比如:
标准io :fopen() ,在 LINUX 系统中 依赖的系统调用IO 是 open(),而在Windows下依赖的系统调用IO是openfile()。所以 open() 与 openfile()就是系统 kernel 提供出来的系统调用IO ,fopen()就是标准IO ,我不论在Linux 系统还是在 Windows系统中调用 fopen() 都能够打开一个文件。

Linux系统编程1标准IO - sysio系统调用IO 与 标准IO概述_第1张图片

标准IO 与 系统调用IO 的选择

如果某个操作,标准IO 和 系统调用IO 都可以实现,那么我们优先选择哪一种IO 呢? 我们优先选择标准IO 。
原因1:标准IO 有很好的移植性

你可能感兴趣的:(Linux系统编程)