文件IO编程四

这一节主要将系统IO的特点以及处理文件的函数。

首先介绍以下linux下的七种文件系统:

1.d 目录
2.- 普通文件
3.c 字符设备
4.b 块设备
5.l 符号链接文件
6.s 本地套接字
7.p 管道文件


文件描述符是什么意思呢?

一个txt文件读到哪了,或者它是以什么模式打开的等等信息都记录在file这个结构体中,一个file结构体只能记录一个文件的信息。file结构体是放在fd_array数组中的,用户只能看到file结构体在fd_array的排序位置(红色箭头),也就是内核空间返回给用户的文件描述符。如下图所示:

                                       

(1) open

头文件: #include<sys/type.h>     #include<sys/stat.h>     #include<fcntl.h>

 int open(const char * pathname, int flags);
 int open(const char * pathname, int flags, mode_t mode);

pathname:路径,flags:标志

第二个函数只有创建文件的时候才要使用mode,它是指该文件的权限。

int fd = open(argv[1], O_RDWR|O_CREAT|O_EXCL,0644);

O_RDONLY:只读方式打开。

O_WRONLY:只写方式打开。

O_RDWR:表示可读可写方式打开。

O_CREAT:如果没有文件就创建一个文件。

O_EXCL:如果存在文件了就报错。

O_THUNC:如文件已经存在,则删除文件中的原有数据。

此时你会发觉fd等于3。这是为什么呢?

因为系统已经帮我们打开了三个文件0,1,2了。fd_array数组中0是代表标准输入,1是标准输出,2是标准出错。

而且如果连续打开两次该文件,两次打开模式可以不一样,那么会生成两个文件描述符。不过也不可能无限打开文件的,它是有上限的,一个进程最多只能打开1024个文件。以下是打开多个文件:

         

(2)close

int close(int fd);

close是释放该文件所占的资源,比如file结构体等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值