- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 文件和目录 6.1 Linux/Unix的文件结构 Linux/Unix环境中的文件具有非常重要的意义,Linux/Unix里的一切事物都看作文件。一般情况下,程序完全可以像对待文件那样对待目录或磁盘文件、串行口、打印机等设备。 6.1.1 文件和目录 #include unistd.h #include sys/types.h #include sys/stat.h int stat(const char *pathname, struct stat *buf); int fstat(int filedes, struct stat *buf); int lstat(const char *pathname, struct stat *buf); 6.1 Linux/Unix的文件结构 struct stat{ dev_t st_dev; //文件的设备号 ino_t st_ino; //文件的i-node mode_t st_mode; //文件的类型和存取权限 nlink_t st_nlink; //连到该文件的硬连接数,刚建立的文件值为1 uid_t st_uid; //文件所有者的ID gid_t st_gid; //文件所有者的组ID dev_t st_rdev; //若此文件为设备文件,则为其设备号 off_t st_size; //文件大小,单位字节 blksize_t st_blksize; //文件系统I/O缓冲区大小 blkcnt_t st_blocks; //占用文件区块的个数,每一区块512字节 time_t st_atime; //文件最近一次被存取或被执行的时间,一般在用 //mknod、utime、read、write和tructate时才改变 time_t st_mtime; //文件最近一次被修改时间,一般在用mknod、 //utime、write时才改变 time_t st_ctime; //i-node最近一次被修改的时间 }; 6.1 Linux/Unix的文件结构 6.1.2 文件和设备 三个比较重要的设备文件: / dev/console /dev/tty / dev/null 6.2 系统调用和设备驱动程序 用来访问设备驱动程序的底层函数,即系统调用函数,包括: open:打开一个文件或设备。 read:从一个打开的文件或设备里读取数据。 write:写入一个文件或设备。 close:关闭一个文件或设备。 ioctl:把控制信息传递到设备驱动程序。 6.3 库函数 在输入输出操作中直接使用底层的系统调用会产生这样一个问题,即它们的效率可能非常之低。 为了给设备和磁盘文件提供更高层的操作界面,Linux操作系统提供了一系列的标准函数库。 用户可以高效率地写任意长度的数据库,库函数则在数据满足数据库长度要求的时候安排执行底层系统调用。这就大大降低了系统调用的负面影响。 6.4 文件I/O 文件描述符是一个非负整数,用户可以通过它们访问打开的文件和设备。对于操作系统而言,所有打开文件都由文件描述符引用,文件描述符的数目取决于Linux系统的配置情况。 用户可以通过系统调用open把其他文件描述符与文件和设备关联在一起。 6.4 文件I/O 6.4.1 open函数 调用open函数可以打开或创建一个文件。 #include sys/types.h # include sys/stat.h #include fcntl.h int open(const char *path, int oflag ); int open(const char *path, int oflag, mode_t mode); 6.4 文件I/O 6.4.2 访问权限的初始化值 使用open加O_CREAT标志来创建一个文件的时候,必须使用有三个参数格式的open函数。 open (“file”, O_CREAT, S_ IWUSR|S_IXOTH); 上面一行代码的作用是创建一个名为file的文件,文件拥有者拥有它的写操作权限,其他用户拥有它的执行权限。 6.4 文件I/O 6.4.3 write函数 用write函数向打开文件写数据。 #include unistd.h ssize_t write(int fildes, const void *buf, size_t nbytes); writ
您可能关注的文档
- Java程序设计实例教程 毕广吉 第8章 异常处理新.ppt
- Java程序设计实例教程 毕广吉 第9章 多线程机制与动画新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第1章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第2章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第3章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第4章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第5章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第6章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第7章新.ppt
- Java程序设计实例教程 魏先民-课件和源代码 第8章新.ppt
文档评论(0)