标准文件IO详解(一)---文件IO操作和标准文件IO操作的区别

POSIX IO操作称为文件IO,也称为低级文件IO,是操作系统提供的系统调用,属于没有缓冲区的文件操作方式。执行该种操作后,内容会直接被写入到内核中的提供给磁盘的专门缓冲区中,内核会定期的刷新该缓冲区,将内容同步到磁盘当中。

ANSI  C IO操作称为标准文件IO,也称为高级文件IO,是C库函数提供的,属于带有缓冲区的文件操作方式。执行该种操作后,内容首先会将内容写入到用户空间的缓冲区中,待缓冲区满或者需要刷新的时候再去调用文件IO,将内容写入到内核的磁盘缓冲区当中。

相比于低级文件IO,高级文件IO有几个优点:

  • 移植性更好。
  • 效率更高。因为使用文件IO会涉及到由用户态到内核态的切换,切换过程必定要浪费一定的cpu时间,所以如果频繁的使用文件IO,会影响程序的效率,使用标准文件IO由于引入了缓冲区,减少了使用文件IO的次数,提高了效率。
时间: 2024-09-30 00:15:59

标准文件IO详解(一)---文件IO操作和标准文件IO操作的区别的相关文章

文件IO详解(二)---文件描述符(fd)和inode号的关系

1.文件描述符和inode号码是不同的两个东西. 2.对于每个进程,系统会建立一个进程控制块(PCB)来保存相关的信息,而这个PCB在内核中的表现其实就是一个称为task_struct的结构体,这个结构体的成员用来保存与此进程有关的相关信息,其中有个成员是struct file_struct  *files,它是用来找到此进程所有打开的文件列表的,files变量指向的是struct file_struct类型的结构体,这个结构体中有一个成员是一个指针数组struct file *fd_array

标准文件IO详解(二)---标准输入流、标准输出流和标准错误流

在文件 IO 中使用文件描述符fd来表示一个文件不同,而标准 IO 使用一个指向 FILE 对象的指针来代表一个文件.FILE 对象实际上是一个结构体,此结构体中封装了代表文件的文件描述符.当然不仅仅是含有文件描述符,其中还会记录属于该文件的用户缓冲区信息. 在文件 IO 详解笔记中提到过标准输入.标准输出和标准错误,分别对应文件描述符的0.1.2,也可以使用STDIN_FILENO.STDOUT_FILENO和STDERR_FILENO三个宏来代替.这三个文件描述符是创建进程时默认会打开的.

Java IO 详解

Java IO 详解 初学java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂.而且没有结合到java7 的最新技术,所以自己来整理一下,有错的话请指正,也希望大家提出宝贵意见. 首先看个图:(如果你也是初学者,我相信你看了真个人都不好了,想想java设计者真是煞费苦心啊!) 这是java io 比较基本的一些处理流,除此之外我们还会提到一些比较深入的基于io的处理类,比如console类,SteamTokenzier,Externalizable接

转发:ZIP文件格式详解(一)——文件数据格式

ZIP文件格式详解(一)——文件数据格式 ---------------------------------------------------------------------------------- 文档说明 ZIP 格式的压缩文件是我们常用的压缩格式之一,他以其通用性.压缩比高而在全球范围内有很多的用户,本文简单介绍 ZIP 文件格式和算法.本文主要参照 http://www.pkware.com 提供的 appnote.txt 文件,你可以从http://www.pkware.com

MFC中文件对话框类CFileDialog详解及文件过滤器说明

当前位置?:?首页???文章分类?:? 开发 ??? MFC中文件对话框类CFileDialog详解及文件过滤器说明 上一篇 利用OpenCV从摄像头获得图像的坐标原点是在左下角 下一篇 Word中为图表生成目录 域名迁移公告 2017年12月20日起,本博客迁移到新域名madaimeng.com,旧域名masikkk.com不再更新内容,但将永久保持可访问! 阅读 大专栏  MFC中文件对话框类CFileDialog详解及文件过滤器说明busuanzi_value_page_pv"> 评

标准文件IO详解(九)---fileno函数详解

在前面笔记“打开流详解”中提到了 fdopen 函数,可以通过文件描述符 fd 来获取对应的文件流指针.而同时 C 库函数提供了 fileno 函数,这个函数的作用就是能够通过 文件流指针来获取对应的 文件描述符 fd . ======================================================= 函数原型: 函数参数: stream:要操作的文件流指针 返回值: 函数返回与文件流指针对应的文件描述符,此函数不会出错(和umask函数类似) =========

文件IO详解(十)---文件共享(多进程之间、单进程之间)

在同一个进程中,实现文件共享的方法有两种: 多次使用open函数打开相同文件 使用dup/dup2函数或者fcntl函数 ======================================================== 对于第一种方法: 每次使用open函数打开文件时,操作系统内核中都会创建一个不同的文件表项(struct file结构体),但是这些不同的struct file结构体最终都会指向同一个struct inode结构体,因为一个文件只能对应唯一的一个struct in

文件IO详解(五)---open函数详解

open函数用来在进程中打开文件,如果成功则返回一个文件描述符fd. ======================================================= 函数原型: 函数参数: pathname:打开文件的路径名 flags:用来控制打开文件的模式 mode:用来设置创建文件的权限(rwx).当flags中带有O_CREAT时才有效. 返回值: 调用成功时返回一个文件描述符fd 调用失败时返回-1,并修改errno ==========================

文件IO详解(七)---lseek函数详解

lseek函数用来设置当前文件偏移量. ====================================================== 函数原型: 函数参数: fd:要操作的文件描述符 offset:基于whence参数的偏移量 whence:参考点位置 返回值: 调用成功时返回当前相对于文件开头的偏移量,以字节为单位 调用失败时返回 -1,并修改errno的值 ======================================================= when