linux读io数据到文件,Linux文件IO(文件的读写)

内容源于朱友鹏老师的课程笔记的学习整理,如有侵权,请告知删除。

一、linux中如何管理文件

(1)硬盘中的静态文件和iNode(i节点)

内容管理表 + 真正存储的内容;

内容管理表以文件为单位进行管理,每个文件一个结构体(即iNode);

平常说的快速格式化,其实就是把内容管理表删除,真正的内容没有被删除。

(2)内存中的动态文件和vnode(v节点)

每个进程都有一个数据结构(叫进程信息表),记录了该进程的所有信息;

进程信息表中有一个指针指向一个文件管理表(叫文件描述符表);

文件描述符表记录了当前进程打开的所有的文件及其信息,即文件描述符与文件表指针。文件描述符相当于数组下标,数组的值是文件表指针。

其中文件表指针指向了文件表,文件表中包含V节点指针、当前文件位移量(即文件指针所处的位置;在动态文件中,文件指针表示当前在文件流的哪个位置)。

如图:

56989b8937f20470faeeee6ab43e6138.png

二、一些概念

API 的一些概念

(1)基于linux做应用开发,其实就是通过调用linux系统提供的API来实现;

(2)API 是一些由linux系统提供的函数,给应用层使用,以完成一定的功能。

(3)常用的文件IO的API 有open,close,write,read,lseek等。

文件描述符(fd)

(1)实质就是一些非负整数,用来区分一个程序打开的多个文件;

(2)作用域是当前进程,也就是说,不同进程下打开的文件的文件描述符可以是相同的数字;

(3)fd从0开始,依次增加。其中0,1,2已经被stdin,stdout,stderr这3个文件占用,也就是说,当运行一个程序时,默认打开了上述三个文件,即把键盘、屏幕当做文件。

文件IO和标准IO的异同

(1)标准IO是C库函数,文件IO是系统提供的API;

(2)C库函数由API封装而来;

(3)C库函数具有移植性,而API是针对具体的系统设计的;

(4)标准IO带有缓存,而文件IO没有缓存。

man手册的查询

man  1  xxx    查询linux的shell命令

man  2  xxx    查询API

man 3   xxx    查询库函数

退出进程

(1)打开文件时如果就出错了,后面的操作就应该不再进行。如 _exit(-1)

(2)退出程序:在main中用return,正常return 0,异常return -1;典型的终止进程应该用exit,_exit,_Exit,后二者是系统API,前者是库函数。

文件的重定位(即把向屏幕输出的内容,输出到某个文件)

fd1=open("文件名",flag) ;

close(1);

fd2=dup(fd1);

三、常见的API

(1)常用文件IO的API 有open,close,write,read,lseek,dup,dup2,fcntl等,具体使用方法可以查看man手册;

(2)注意open里面的flag对文件操作的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值