1. 文件流与文件描述符的区别

a) 任何进程在运行时都默认打开3个流对象,(stdin, stdout, stderr)它们都有对应的文件描述符,其文件描述符分别为0,1,2,以后打开的文件描述符的值一般都选用未使用的最小值

b) LINUX为管理每个每个进程打开的文件,在进程的私有结构体struct task_struct(即进程PCB,由内核提供)中,对任何进程来说,都将为这个结构体专门分配管理打开文件信息的表项,用以指示当前进程打开的文件结构体,通俗点解释就是每一个进程都在内核的struct task_struct结构体中有一个信息表项,然后这个表项指向这个进程所打开的文件列表,然后文件列表中的文件描述符指向具体打开的文件结构信息

c) 文件描述符与文件流的转换操作

linux为用户层提供了函数fileno( )以从文件流中读取其文件描述符

extern int fileno( FILE *__stream)

函数fdopen( )将实现某个流与一个文件描述符的连接

extern FILE *fdopen ( int __fd,  __const char *__modes),这里需要使用fprintf( )来操作流对象。

有了上述对流,对文件描述符的较深入的了解,接下来学习POSIX标准下的文件IO管理就会有更多自己的体会。

  1. fopen( ), fread( ), fwrite( ), fclose( ), open( ), read( ), write( ), close( ), creat( ), lseek( )

文件打开flags标识一览:

O_RDONLY

O_WRONLY

O_RDWR,

O_CREAT

O_EXCL若同O_CREAT一起使用,如果文件已经存在报错

O_NOCTTY 如果打开终端设备,不将其作为进程控制终端机

O_TRUNC 若文件存在并且可读可写,将文件内容清空

O_APPEND 读写文件时从文件尾部开始

O_NONBLOCK以非阻塞方式打开,执行后立即返回

O_NDELAY 同O_NONBLOCK

O_SYNC 同步方式打开文件,关闭文件前,将缓存写入

O_LARGEFILE 在32位系统下支持大于2G文件打开操作

 

文件打开权限一览:

S_I(R/W/X)(USR/GRP/OTH),S_IRWXU, S_IRWXO, S_IRWXG

以上是系统函数权限设置标识,用户函数不同,如“r+”“w+”等

自己做笔记添加进来。

  1. 文件控制fcntl( )函数用于修改某个文件描述符的特殊属性,复制文件描述符,获取文件描述符,设置文件描述符,获取文件状态设置文件状态
  2. 映射文件到内存mmap( )
  3. 锁定/解锁文件

函数flock( ) 和 函数fcntl( )都可以提供对文件的锁操作,但是flock( )只能锁定整个文件,不能锁定某个区域,而fcntl( )可以提供任意位置的内容锁定。

  1. 目录流的基本操作-----目录文件中存储的是该目录下所有的文件以及子目录文件的信息

a) 打开/关闭目录文件

DIR *opendir( const char *dirname)

DIR *closedir( const char *dirname) 返回一个目录流指针

b) 读/写目录内容

c) 定位目录内容

d) 添加和删除目录

e) 获取当前工作路径

7.以上关于文件的操作只是基本的关于文件操作内容,还有一块内容,是关于对普通文件,连接文件及目录文件属性的读取修改等操作,这块内容大家自己学习,不进行讲授。

文件IO大纲的更多相关文章

  1. 标准io与文件io

    A: 代码重复: 语句块1: while(判断) { 语句块2: 语句块1: } 上面可以改写为: while(1) { 语句块1: if(判断) break: 语句块2: } B: 标准IO和文件I ...

  2. 文件IO函数和标准IO库的区别

    摘自 http://blog.chinaunix.net/uid-26565142-id-3051729.html 1,文件IO函数,在Unix中,有如下5个:open,read,write,lsee ...

  3. 转 漫谈linux文件IO

    在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO.本篇文件打算详细全面,深入浅出.剖析文件IO的细节.从多个角度探索如何提高IO性能.本文尽量用 ...

  4. (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  5. Java文件IO操作应该抛弃File拥抱Paths和Files

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream;import java.nio.file.FileSystem; ...

  6. Java 文件IO续

    文件IO续 File类    用来将文件和文件夹封装成对象 方便对文件和文件夹的属性信息进行操作    File对象可以作为参数传递给流的构造函数 Demo1 File的构造方法 public cla ...

  7. Java 文件IO

    文件IO Java IO    IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中    按操作数据分为 字节流和字符流        字符流的 ...

  8. 文件IO和标准IO

    2015.2.26 星期四,阴天 今天的内容主要是文件IO man 手册的分册: man -f open 查看那些分册中有openman 1 -- 普通的命令程序man 2 -- 系统调用man 3 ...

  9. 文件IO操作

    前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...

随机推荐

  1. Duilib 入门级教程 推荐

    http://www.cnblogs.com/Alberl/category/520438.html 作者写的不错,图文并茂,适合刚入门.

  2. iOS 数组containsObject:方法

    今年上半年打算巩固一下基础知识,将工作和学习中遇到的疑惑尽量搞清楚原理.作为一个菜鸟级别的程序员,我深深的体会到算法和基础的重要性,如果说算法是内功,那么基础就是下盘,只有下盘稳住了,上面才不会轻易倒 ...

  3. 5.MongoDB CRUD Operations-官方文档摘录

    总结 1. CRUD:create, read, update, and delete DOCUMENT 2.在3.2版本的插入方式 db.collection.insertOne() db.coll ...

  4. mysql什么情况下使用索引

    表的主关键字 自动建立唯一索引 如zl_yhjbqk(用户基本情况)中的hbs_bh(户标识编号) 表的字段唯一约束 ORACLE利用索引来保证数据的完整性 如lc_hj(流程环节)中的lc_bh+h ...

  5. x265探索与研究(六):main()函数

    x265探索与研究(六):main()函数 x265源代码的入口函数是main(),本文分析main()的主要功能. 首先给出main()函数的功能及其代码结构:其次给出main()函数源代码以及分析 ...

  6. VGA显示

    VGA控制器的编写主要是了解VGA的显示标准和时序,如1024X768@60Hz,确定时钟频率(65MHz=1344X806X60),列像素时间等于时钟周期,扫描从左到右.从上到下(类似于电视扫描PA ...

  7. HTML 2 (Day49)

    一.table标签 http://www.cnblogs.com/shaojiafeng/p/7516741.html 二.form 表单属性 action:表单提交到哪.一般指向服务端一个程序,程序 ...

  8. NHibernate之配置文件属性说明

    一.NHibernate配置所支持的属性 属性名 用途 dialect 设置NHibernate的Dialect类名 - 允许NHibernate针对特定的关系数据库生成优化的SQL 可用值: ful ...

  9. angularJS 中的传参

    今天总结一下 angularJS 传参的 3种方式:(配合 ui-router) 现在有两个页面,page1.html 和 page2.html, 现由 page1.html 向 page2.html ...

  10. jmeter常用插件安装

    转载:http://www.cnblogs.com/danqiu/p/6119156.html 下载地址:http://jmeter-plugins.org/downloads/all/ PerfMo ...