
Linux文件IO
文章平均质量分 65
一朵小云朵
这个作者很懒,什么都没留下…
展开
-
linux系统如何管理文件
1、硬盘中的静态文件和inode(i节点)(1)文件平时都在存放在硬盘中的,硬盘中存储的文件以一种固定的形式存放的,我们叫静态文件。(2)一块硬盘中可以分为两大区域:一个是硬盘内容管理表项,另一个是真正存储内容的区域。操作系统访问硬盘时是先去读取硬盘内容管理表,从中找到我们要访问的那个文件的扇区级别的信息,然后再用这个信息去查询真正存储内容的区域,最后得到我们要的文件。(3)操作系统最初拿到的信息...原创 2018-07-11 08:56:46 · 207 阅读 · 0 评论 -
open函数的flag详解2
1、打开不存在的文件时:O_CREAT、O_EXCL(1)思考:当我们去打开一个并不存在的文件时会怎样?当我们open打开一个文件时如果这个文件名不存在则会打开文件错误。(2)vi或者windows下的notepad++,都可以直接打开一个尚未存在的文件。(3)open的flag O_CREAT就是为了应对这种打开一个并不存在的文件的。O_CREAT就表示我们当前打开的文件并不存在,我们是要去创建...原创 2018-07-06 14:29:37 · 1219 阅读 · 0 评论 -
open函数的flag详解1
1、读写权限:O_RDONLY O_WRONLY O_RDWR (1)linux中文件有读写权限,我们在open打开文件时也可以附带一定的权限说明(譬如O_RDONLY就表示以只读方式打开,O_WRONLY表示以只写方式打开,O_RDWR表示以可读可写方式打开) (2)当我们附带了权限后,打开的文件就只能按照这种权限来操作。2、打开存在并有内容的文件时:O_APPEND、O_TRUNC...原创 2018-07-06 14:19:25 · 1941 阅读 · 0 评论 -
一个简单的文件读写实例
1.打开文件与关闭文件 (1)linux中的文件描述符fd的合法范围是0或者一个正正数,不可能是一个负数。 (2)open返回的fd程序必须记录好,以后向这个文件的所有操作都要靠这个fd去对应这个文件,最后关闭文件时也需要fd去指定关闭这个文件。如果在我们关闭文件前fd丢掉了那就惨了,这个文件没法关闭了也没法读写了。2.实时查man手册 (1)当我们写应用程序时,很多API原型都...原创 2018-07-06 14:15:50 · 637 阅读 · 0 评论 -
文件操作的主要接口API
(1)文件描述符其实实质是一个数字,这个数字在一个进程中表示一个特定的含义,当我们open打开一个文件时,操作系统在内存中构建了一些数据结构来表示这个动态文件,然后返回给应用程序一个数字作为文件描述符,这个数字就和我们内存中维护这个动态文件的这些数据结构挂钩绑定上了,以后我们应用程序如果要操作这一个动态文件,只需要用这个文件描述符进行区分。(2)一句话讲清楚文件描述符:文件描述符就是用来区分一个程序打开的多个文件的。(3)文件描述符的作用域就是当前进程,出了当前进程这个文件描述符就没有意义了原创 2018-07-06 14:06:24 · 1281 阅读 · 0 评论 -
标准IO库介绍
1、标准IO和文件IO有什么区别(1)看起来使用时都是函数,但是:标准IO是C库函数,而文件IO是linux系统的API(2)C语言库函数是由API封装而来的。库函数内部也是通过调用API来完成操作的,但是库函数因为多了一层封装,所以比API要更加好用一些。(3)库函数比API还有一个优势就是:API在不同的操作系统之间是不能通用的,但是C库函数在不同操作系统中几乎是一样的。所以C库函数具有可移植...原创 2018-07-11 09:16:15 · 1753 阅读 · 0 评论 -
fcntl函数介绍
1、fcntl的原型和作用(1)fcntl函数是一个多功能文件管理的工具箱,接收2个参数+1个变参。第一个参数是fd表示要操作哪个文件,第二个参数是cmd表示要进行哪个命令操作。变参是用来传递参数的,要配合cmd来使用。(2)cmd的样子类似于F_XXX,不同的cmd具有不同的功能。学习时没必要去把所有的cmd的含义都弄清楚(也记不住),只需要弄明白一个作为案例,搞清楚它怎么看怎么用就行了,其他的...原创 2018-07-11 09:13:15 · 2607 阅读 · 0 评论 -
文件描述符的复制
1、dup和dup2函数介绍2、使用dup进行文件描述符复制(1)dup系统调用对fd进行复制,会返回一个新的文件描述符(譬如原来的fd是3,返回的就是4)(2)dup系统调用有一个特点,就是自己不能指定复制后得到的fd的数字是多少,而是由操作系统内部自动分配的,分配的原则遵守fd分配的原则。(3)dup返回的fd和原来的oldfd都指向oldfd打开的那个动态文件,操作这两个fd实际操作的都是o...原创 2018-07-11 09:12:25 · 754 阅读 · 0 评论 -
文件共享的实现方式
1、什么是文件共享(1)文件共享就是同一个文件(同一个文件指的是同一个inode,同一个pathname)被多个独立的读写体(几乎可以理解为多个文件描述符)去同时(一个打开尚未关闭的同时另一个去操作)操作。(2)文件共享的意义有很多:譬如我们可以通过文件共享来实现多线程同时操作同一个大文件,以减少文件读写时间,提升效率。2、文件共享的3种实现方式(1)文件共享的核心就是怎么弄出来多个文件描述符指向...原创 2018-07-11 09:09:49 · 4641 阅读 · 1 评论 -
多次打开同一文件与O_APPEND
1、重复打开同一文件读取(1)一个进程中两次打开同一个文件,然后分别读取,看结果会怎么样(2)结果无非2种情况:一种是fd1和fd2分别读,第二种是接续读。经过实验验证,证明了结果是fd1和fd2分别读。(3)分别读说明:我们使用open两次打开同一个文件时,fd1和fd2所对应的文件指针是不同的2个独立的指针。文件指针是包含在动态文件的文件管理表中的,所以可以看出linux系统的进程中不同fd对...原创 2018-07-11 09:06:34 · 3796 阅读 · 0 评论 -
lseek详解
1、lseek函数介绍(1)文件指针:当我们要对一个文件进行读写时,一定需要先打开这个文件,所以我们读写的所有文件都是动态文件。动态文件在内存中的形态就是文件流的形式。(2)文件流很长,里面有很多个字节。那我们当前正在操作的是哪个位置?GUI模式下的软件用光标来标识这个当前正在操作的位置,这是给人看的。(3)在动态文件中,我们会通过文件指针来表征这个正在操作的位置。所谓文件指针,就是我们文件管理表...原创 2018-07-11 09:00:27 · 3730 阅读 · 0 评论 -
文件读写的一些细节
1、errno和perror(1)errno就是error number,意思就是错误号码。linux系统中对各种常见错误做了个编号,当函数执行错误时,函数会返回一个特定的errno编号来告诉我们这个函数到底哪里错了。(2)errno是由OS来维护的一个全局变量,任何OS内部函数都可以通过设置errno来告诉上层调用者究竟刚才发生了一个什么错误。(3)errno本身实质是一个int类型的数字,每个...原创 2018-07-06 14:33:51 · 331 阅读 · 0 评论