文件流、目录流、文件描述符总结
文件流、目录流、文件描述符总结
宗旨:技术的学习是有限的,分享的精神是无限的。
内核为使当前进程与进程打开的文件建立联系,在进程PCB(一个结构体task_struct)中使用一个成员来指向关于打开文件列表的结构体struct file_struct,而该结构体中的struct file *fd_array[]是一个指针数组,指向每个打开的文件信息。内核将这个数组中每个成员的下标值(int 型)传递给用户控件来标识该打开的文件,该值即文件描述符。
为了提高执行效率和可移植性,glibc库在用户空间申请了一个FILE *结构体对象,该结构体中的一个成员就是对应打开的文件描述符值,即文件流在文件描述符之上的封装。文件流通过增加缓冲区减少读写系统调用次数来提高读写效率。
目录流是针对目录操作而构建的对象。其基本操作类似于文件流操作。
ANSI文件IO是使用文件流操作,POSIX文件IO是使用文件描述符来操作,文件流是在内核提供的文件描述符基础上,在进程的用户空间封装的FILE结构,以提高可移植性和效率。
操作 |
文件流(普通文件) |
目录流(目录文件) |
文件描述符 |
描述方法 |
文件流指针FILE * |
目录流指针 DIR * |
文件描述符int |
打开 |
fopen |
opendir |
open |
读 |
fread/fgets/fgetc |
readdir |
read |
写 |
fwrite/fputs/fputc |
创建文件或目录 |
write |
定位 |
fseek/ftell/rewind |
seekdir/telldir/rewinddir |
lseek |
文件流、目录流、文件描述符总结相关推荐
- linux 文件的目录,Linux文件及目录管理
第七列:文件或目录名.名以 . 开头表示为隐藏文件或隐藏目录 2.2 修改文件目录或者权限 改变文件所属用户组:chgrp chgrp [-R] 用户组 文件或目录 ... [-R]:递归修改该目录下 ...
- hadoop fs:du统计hdfs文件(目录下文件)大小的用法
hadoop fs:du统计hdfs文件(目录下文件)大小的用法 hadoop fs 更多用法,请参考官网:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_s ...
- RHCSA (二) —— 常用简单命令Linux文件类型目录操作命令文件操作命令
RHCSA 第二天 一.常用简单命令 1.timedatectl命令 timedatectl命令中的参数以及作用 2.reboot命令 3.poweroff命令 4.wget命令 wget命令的参数以 ...
- python操作文件和目录_python文件和目录操作方法
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...
- Linux 命令之 find -- 查找文件和目录/搜索文件和目录
文章目录 命令介绍 语法格式 常用选项 文件类型 参考示例 (一)在当前目录及其子目录下搜索内容中含有"140.206.111.111"的所有文件 (二)列出当前目录及其子目录下所 ...
- 【转】VC MFC 如何删除文件,目录,文件夹
原文网址:http://shijuanfeng.blogbus.com/logs/100675115.html 第一种方法:定义一个文件类对象来操作 CFile TempFile; Te ...
- android获取文件上级目录,Android 文件存储
Android 存储位置及 API 一.内部存储 应用安装后都会在Android 根目录生成 /data/data/packagename,当前应用读取不需要读写权限 注意: 有些开发者可能看到过应用 ...
- python拷贝文件夹目录和文件_Python 拷贝文件及文件夹到远程主机目录
WechatIMG484.jpeg 创建 scp.py,代码如下. import os import re import time import sys import subprocess impor ...
- php上传文件的目录,php文件上传及下载附带显示文件及目录功能
主页面wenjianceshi.php 文件 *{ font-family:"微软雅黑";} #wai{width:400px; margin:0 auto; padding:0p ...
- java 检测目录下的文件_如何在Java中检查文件是目录还是文件
java 检测目录下的文件 java.io.File class contains two methods using which we can find out if the file is a d ...
最新文章
- Opencv4测试报错00007FFB3253A9C0 (ntdll.dll)处引发的异常: 0xC0000005: 读取位置 0x0000000000000010 时发生访问冲突
- 读文献先读图——主成分分析 PCA 图
- kinect深度距离误差_Kinect 深度测量原理
- Spring JdbcTemplate的queryForList(String sql , Class<T> elementType)返回非映射实体类的解决方法
- 维密求变,“自救”还是“挖坟”?
- 关于mysql的wait_timeout参数 设置不生效的问题
- 数值的加减会改变python中id,在python中调用Nan值并更改为数字
- miui游戏驱动程序偏好设置_米粉必看:小米官方教你如何关闭 MIUI 广告 - 小米,MIUI...
- Windows下RabbitMQ安装及入门
- PLSQL提示动态执行表不可访问,本会话的自动统计被禁止问题的解决
- 昆仑mcgs 通讯控制台达B2伺服采用modbus rtu方式,昆仑屏直接控制台达b2伺服的正反转,停止及速度设定,简单好上手
- m4s格式转换mp3_简单的amr转换mp3音频格式转换方法
- I2C协议研读(九):十位寻址
- 日本动漫作家和其部分作品
- Pandas时间序列进阶(日期范围,频率,移位,时区处理)
- Ka的分治|归并排序,注释详尽
- 张量分解和应用(1)
- STOP: c000021a { Fatal System Error } the initial session process or system process terminated ...
- P/Invoke with SWIG
- 指环王java_指环王1:魔戒再现 加长版【4KUHD】【HDR】【杜比视界】【全景声】 【原生中字】 【DIY国配】...
热门文章
- Python实现文件md5校验
- 使用2to3.py 转换 python2.x 代码 到python3
- 读中文_挑战来了!康辉喊你读中文十级绕口令!
- python哪个版本支持xp_windows支持哪个版本的python
- linux驱动文件操作简单介绍
- 【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
- 怎样王远端服务器上传文件,传王电子传真使用指南-Freefax传真服务器,传王A6,免费传真...
- 驱动框架1——什么是驱动框架?
- 使用HanLP增强Elasticsearch分词功能
- 【长沙集训】2017.10.10