文件I/O

在对文件进行读写操作时

需要先打开文件

内核为每一个进程维护一个打开文件的列表

该表被称为  文件表 file table

该表由一些叫 文件描述符(fds) 的非负整数进行索引

 

列表中的每项均包含一个打开文件的信息,其中包含一个指向文件备份inode内存拷贝的指针和元数据

用户空间和内核空间把每个文件描述符作为每个进程的唯一cookies

打开一个文件返回一个文件描述符。

 

而接下来的操作就是把文件描述符作为基本的参数

 

 

子进程默认会获得一份父进程的文件表拷贝

文件描述符由C语言的int 类型表示

 

每个进程按照惯例会  至少打开三个文件描述符 0,1,2

除非进程显示地关闭它们

文件描述符 0 是  标准输入

文件描述符 1 是 标准输出

文件描述符 2 是标准错误

 

文件描述符不仅仅 用于 访问 普通文件

也用于访问设备文件,管道,目录以及快速用户空间锁,fifos 和 套接字

遵循一切皆文件的理念

任何你能读写的东西都可以用文件描述符来访问

 

open() 系统调用

通过 open()系统调用来打开一个文件并获得一个文件描述符

 

 

以只写模式打开的文件不能被读取

反之亦然

 

转载于:https://www.cnblogs.com/Cheetos/p/5350313.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值