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. Oracle数据库的连接模式connection Mode、连接connection与会话session

    数据库的连接模式Connection Mode: Dedicated Server Mode(专有模式) 当用户发出请求时,如远程的client端通过监听器连接数据库上,ORACLE的服务器端会启用一 ...

  2. java工程编写manifest文件

    如果需要一个可以单独运行的jar包“Runnable JAR file”,省事的方法是妥妥的选择打一个可运行的jar包“Runnable JAR file”.如此一来,就可以把程序运行所依赖的类.第三 ...

  3. JVM的JIT机制

    因为 JVM 的 JIT 机制的存在,如果某个函数被调用多次之后,JVM 会尝试将其编译成为机器码从而提高执行速度.

  4. django自定义模板和过滤器

    -自定义过滤器 -1 先app是不是已经在setting中注册 -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块) -3 在模块下创建一个py文件,名字随意: ...

  5. python小知识点复习

    join 与 split 对应,join传入的列表只包含字符串卡类型 字典 dic = {'x':1, 'y':2, 'x':3} print(dic) # {'x': 3, 'y': 2} 重复的k ...

  6. Andrew Ng机器学习编程作业:Multi-class Classification and Neural Networks

    作业文件 machine-learning-ex3 1. 多类分类(Multi-class Classification) 在这一部分练习,我们将会使用逻辑回归和神经网络两种方法来识别手写体数字0到9 ...

  7. CF 558 C. Amr and Chemistry 暴力+二进制

    链接:http://codeforces.com/problemset/problem/558/C C. Amr and Chemistry time limit per test 1 second ...

  8. Android图片加载框架之Picasso

    相信做Android开发的对Square公司一定不会陌生,大名鼎鼎的网络请求框架Retrofit就来源于它,今天学习的是该公司出品的图片加载框架Picasso. 项目地址 https://github ...

  9. 关于shared pool的深入探讨(六)-高Latch竞争案例

    研究了几天shared pool,没想到忽然就撞到问题上来了.作为一个案例写出来给大家参考一下吧. 问题起因是公司做短信群发,就是那个18万买的4000字的短信小说(嘘,小声点,我也没看过...).群 ...

  10. HTML5堆木头游戏

    在线演示 本地下载