八、Linux文件 - 文件IO与标准IO的区别

文件IO与标准IO在Linux中有所区别,文件IO直接调用内核系统调用,如Open、Write,而标准IO如fopen、fprintf等更抽象,可读写标准输入输出及文件。缓存方面,程序中的缓存涉及用户空间和内核空间,文件IO操作会涉及到这两个层面的缓存交互。C库缓存会在遇到 或达到一定大小时将内容写入内核缓存。
摘要由CSDN通过智能技术生成

目录

1.文件IO与标准IO的区别

2.缓存的概念


1.文件IO与标准IO的区别

Linux标准文件描述符

文件描述符缩写描述
0STDIO标准输入
1STDOUT标准输出
2STDERR标准错误输出

  • 文件IO:是直接调用内核提供的系统调用函数,头文件时unistd.h
    • Open();Close();Write();Read();lseek();
  • 标准IO:是间接调用系统调用函数,头文件是:stdio.h
    • fopen();fclose();fread();fwrite();flseek;
  • 之前学过:输入相关的函数,都是和标准的输入(键盘),标准的输出(显示器)
    • getchar(),putchar()  ----一个字符
      
      gets(buf),puts(buf)  ----一串字符
      
      scanf(),printf()     ----一个字符、一串字符

与一些普通文件的读写没有关系,也即是这些函数不能读写普通文件。

标准IO中的相关函数,不仅可以读写普通文件,也可以向标准的输入或标准的输出中读或写。

2.缓存的概念

  1. 我们的程序中的缓存,就是你想从内核读写的缓存(数组)----用户空间的缓存
  2. 每打开一个文件,内核在内核空间中也会开辟一块缓存,这个叫内核空间的缓存
    1. 文件IO中的写即是将用户空间中的缓存写到内核空间的缓存中。
    2. 文件IO中的读即是将内核空间中的缓存写到用户空间的缓存中。
  3. 标准IO中的库函数中也有一个缓存,这个缓存称为----库缓存

C库缓存的特点:

  1. 遇到 \n 时,会将库缓存的内容写到内核缓存中,即调用了系统调用函数。
  2. 库缓存写满时,会调用系统调用函数,将库缓存内容写道内核缓存中。1024byte时库缓存会写满。

验证库缓存的存在

#include "stdio.h"
int main()
{
char buf[]="hello linux";
printf("%s",buf);
while(1);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值