文件流、目录流、文件描述符总结


宗旨:技术的学习是有限的,分享的精神是无限的。


内核为使当前进程与进程打开的文件建立联系,在进程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

文件流、目录流、文件描述符总结相关推荐

  1. linux 文件的目录,Linux文件及目录管理

    第七列:文件或目录名.名以 . 开头表示为隐藏文件或隐藏目录 2.2 修改文件目录或者权限 改变文件所属用户组:chgrp chgrp [-R] 用户组 文件或目录 ... [-R]:递归修改该目录下 ...

  2. hadoop fs:du统计hdfs文件(目录下文件)大小的用法

    hadoop fs:du统计hdfs文件(目录下文件)大小的用法 hadoop fs 更多用法,请参考官网:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_s ...

  3. RHCSA (二) —— 常用简单命令Linux文件类型目录操作命令文件操作命令

    RHCSA 第二天 一.常用简单命令 1.timedatectl命令 timedatectl命令中的参数以及作用 2.reboot命令 3.poweroff命令 4.wget命令 wget命令的参数以 ...

  4. python操作文件和目录_python文件和目录操作方法

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...

  5. Linux 命令之 find -- 查找文件和目录/搜索文件和目录

    文章目录 命令介绍 语法格式 常用选项 文件类型 参考示例 (一)在当前目录及其子目录下搜索内容中含有"140.206.111.111"的所有文件 (二)列出当前目录及其子目录下所 ...

  6. 【转】VC MFC 如何删除文件,目录,文件夹

    原文网址:http://shijuanfeng.blogbus.com/logs/100675115.html 第一种方法:定义一个文件类对象来操作 CFile   TempFile;      Te ...

  7. android获取文件上级目录,Android 文件存储

    Android 存储位置及 API 一.内部存储 应用安装后都会在Android 根目录生成 /data/data/packagename,当前应用读取不需要读写权限 注意: 有些开发者可能看到过应用 ...

  8. python拷贝文件夹目录和文件_Python 拷贝文件及文件夹到远程主机目录

    WechatIMG484.jpeg 创建 scp.py,代码如下. import os import re import time import sys import subprocess impor ...

  9. php上传文件的目录,php文件上传及下载附带显示文件及目录功能

    主页面wenjianceshi.php 文件 *{ font-family:"微软雅黑";} #wai{width:400px; margin:0 auto; padding:0p ...

  10. java 检测目录下的文件_如何在Java中检查文件是目录还是文件

    java 检测目录下的文件 java.io.File class contains two methods using which we can find out if the file is a d ...

最新文章

  1. Opencv4测试报错00007FFB3253A9C0 (ntdll.dll)处引发的异常: 0xC0000005: 读取位置 0x0000000000000010 时发生访问冲突
  2. 读文献先读图——主成分分析 PCA 图
  3. kinect深度距离误差_Kinect 深度测量原理
  4. Spring JdbcTemplate的queryForList(String sql , Class<T> elementType)返回非映射实体类的解决方法
  5. 维密求变,“自救”还是“挖坟”?
  6. 关于mysql的wait_timeout参数 设置不生效的问题
  7. 数值的加减会改变python中id,在python中调用Nan值并更改为数字
  8. miui游戏驱动程序偏好设置_米粉必看:小米官方教你如何关闭 MIUI 广告 - 小米,MIUI...
  9. Windows下RabbitMQ安装及入门
  10. PLSQL提示动态执行表不可访问,本会话的自动统计被禁止问题的解决
  11. 昆仑mcgs 通讯控制台达B2伺服采用modbus rtu方式,昆仑屏直接控制台达b2伺服的正反转,停止及速度设定,简单好上手
  12. m4s格式转换mp3_简单的amr转换mp3音频格式转换方法
  13. I2C协议研读(九):十位寻址
  14. 日本动漫作家和其部分作品
  15. Pandas时间序列进阶(日期范围,频率,移位,时区处理)
  16. Ka的分治|归并排序,注释详尽
  17. 张量分解和应用(1)
  18. STOP: c000021a { Fatal System Error } the initial session process or system process terminated ...
  19. P/Invoke with SWIG
  20. 指环王java_指环王1:魔戒再现 加长版【4KUHD】【HDR】【杜比视界】【全景声】 【原生中字】 【DIY国配】...

热门文章

  1. Python实现文件md5校验
  2. 使用2to3.py 转换 python2.x 代码 到python3
  3. 读中文_挑战来了!康辉喊你读中文十级绕口令!
  4. python哪个版本支持xp_windows支持哪个版本的python
  5. linux驱动文件操作简单介绍
  6. 【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
  7. 怎样王远端服务器上传文件,传王电子传真使用指南-Freefax传真服务器,传王A6,免费传真...
  8. 驱动框架1——什么是驱动框架?
  9. 使用HanLP增强Elasticsearch分词功能
  10. 【长沙集训】2017.10.10