文档详情

《2-UNIXLinux操作系统编程-文件与目录操作》.ppt

发布:2016-09-14约3万字共142页下载文档
文本预览下载声明
* * * * 解释为什么能减少调用次数,举例子两个文件的操作 * 实际IO的含义 将fflush与sync等函数做个对比 * 谁释放这buf? * 谁释放这buf? * * 说明一下原因 * 如果自己分配了缓存,自己释放,为什么不能让标准库帮我们释放 动态链接库也是一种程序存在的形式,它拥有自己的资源,也有自己的内存池 看书的方法 * * * fclose函数 关闭一个打开了的流 函数原型 int fclose(FILE *fp); 参数和返回值 fp:要关闭的流对应的文件指针 成功返回0,出错返回EOF 在该文件被关闭之前,刷新缓存中的输出数据。缓存中的输入数据被丢弃,如果标准I/O库已经为该流自动分配了一个缓存,则释放此缓存。 * 标准流 * 字符读文件流 * 字符写操作 * 行读写操作 * 块读写文件流 * 文件流检测 * 文件流定位 * printf/scanf函数 * fprintf/fscanf函数 * sprintf函数 * sprintf函数 * sscanf函数 * sscanf函数 实验二:文件I/O实验 实验目的: 掌握POSIX与ANSI C文件I/O操作方法 打开文件、关闭文件、创建文件 读写文件 定位文件 实验三:文件与目录操作实验 实验目的: 掌握Linux目录操作方法 打开目录、关闭目录 读取目录文件 掌握Linux文件属性获取方法 三个获取Linux文件属性的函数 文件属性解析相关的宏 实验二:文件I/O实验 实验三:文件与目录操作实验 实验内容: 利用POSIX API和文件属性解析的相关宏编程实现ls –l命令 利用POSIX API(文件操作也可以使用ANSI C标准I/O库)编程实现cp –r命令 在UNIX/Linux内核中每个打开的文件(或设备)都有一个对应的V节点结构,V节点包含了文件类型和对此文件进行各种操作的函数指针。对于大多数文件,v节点还包含了该文件的i节点。i节点与具体的逻辑文件系统有关,存储在磁盘上,在打开文件时从磁盘上读入到内存中。i节点包含了文件的所有者、文件长度、文件所在设备、指向文件实际数据块在磁盘上所在位置的指针等等。 UNIX/Linux每个进程在内核中都有一个结构体来维护进程相关的信息称为进程控制块 (PCB,Process Control Block)。UNIX/Linux中每个打开的文件在内核中都有一个结构体来维护文件相关的信息,成为文件表。每一个PCB中有一个指针数组,数组中的每一个成员指向一个该进程打开的文件表,称为文件描述符表。 ?用户程序不能直接访问内核中的文件描述符表,而只能使用文件描述符表的索引?(即0、1、2、3这些数字),这些索引就称为文件描述符(File Descriptor), * 每个进程在Linux内核中都有一个task_struct结构体来维护进程相关的信息,task_struct中有一个指针(struct files_struct *files;?)指向files_struct结构体,称为文件描述符表 已打开的文件在Linux内核中用file结构体表示,文件描述符表中的指针指向file结构体 文件描述符表中每个表项包含一个指向已打开的文件的指针(指向file结构的指针) 在file结构体中比较重要的成员包括File Status Flag(f_flags)和当前读写位置(f_pos )还有f_count,表示引用计数(Reference Count),如dup、fork 等系统调用会导致多个文件描述符指向同一 个file结构体,例如有fd1 和fd2 都引用同一个file结构体,那么它的引用计数就是2, 当close(fd1) 时并不会释放file 结构体,而只是把引用计数减到1,如果再close(fd2) ,引用计数 就会减到0同时释放file 结构体,这才真的关闭了文件 每个file 结构体都指向一个file_operations 结构体,这个结构体的成员都是函数指针,指向实现各种文件操作的内核函数。比如在用户程序中read 一个文件描述符,read 通过系统调用进入内核, 然后找到这个文件描述符所指向的file 结构体,找到file 结构体所指向的file_operations结构体,调用它的read 成员所指向的内核函数(如内核代码中实现函数可能为sys_read())以完成用户请求 * * * * * * * * * * * * * * 库简化工作移植性,举例STL,MFC(工作原理,windows应用程序工作原理) C库效率高么? 说明设计库的注意事项。提供足够的接口,扩展性,性能 几种类型的库 * 文件存取许可权小结 常数 说明 对普通文件的影响 对目录的影响 S_ISUID
显示全部
相似文档