当前位置首页 > 计算机 > linux/Unix
搜柄,搜必应! 快速导航 | 使用教程

linux教程-第3章--文件系统简介课件

文档格式:PPTX| 41 页|大小 855.84KB|2024-11-14 发布|举报 | 版权申诉
第1页
第2页
第3页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 41
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • 单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,3,章 文件系统简介,3.1,Linux,下的,文件系统,3.2,文件的通用操作,方法,3.3 socket,文件类型,2、教学要求,掌握:文件描述符,的作用,、文件的通用操作方法、fctnl与ioctl,了解:文件系统、socket文件类型,第3章 文件系统简介3.1 Linux下的文件系统,1,3.1,Linux,下的文件系统,3.1.1 Linux,下文件的,内涵,3.1.2,文件系统的,创建,3.1.3,挂接,文件系统,3.1.4,索引节点,inode,3.1.5,普通,文件,3.1.6,设备,文件,3.1.7,虚拟文件系统,VFS,3.1 Linux下的文件系统3.1.1 Linux下文,2,3.1.1 Linux,下文件的内涵,Linux,下的文件系统是对复杂系统进行合理抽象的一个经典的例子,它通过一套统一的接口函数对不同的文件进行操作普通文件,字符设备文件,块设备文件,socket,文件,3.1.1 Linux下文件的内涵Linux下的文件系统是,3,3.1.2,文件系统的创建,在,Linux,下对磁盘进行操作的工具是,fdisk,,与,Windows,下的,fdisk,功能有些类似,但是命令的格式完全不同。

    1,系统分区情况,:fdisk-l,2,建立分区,3,查看分区是否成功,4,格式化分区,5,挂载分区,6,查看分区挂载情况,3.1.2 文件系统的创建在Linux下对磁盘进行操作的工,4,查看分区,/usb,情况:,sudo fdisk-l,查看分区/usb情况:sudo fdisk-l,5,3.1.3,挂接文件系统,Linux,系统下,要使用一个文件系统需要先将文件系统的分区挂载到系统上mount,命令用于挂载文件,它有很多选项mount,命令的使用格式为:,mount t type mountpoint device o options,例子:将,U,盘挂到,/mnt/usb,目录下(如不存在则要建该目录),根据,fdisk-l,知道,u,盘的名称和文件格式,sudo,mount-t msdos/dev/sdb1/mnt/usb,/mnt/usb,以后就代表,U,盘了,卸载:,sudo u,mount /mnt/usb,3.1.3 挂接文件系统Linux系统下,要使用一个文件系,6,3.2,文件的通用操作方法,3.2.1,文件,描述符,3.2.2,打开创建文件,open(),、,create(),函数,3.2 文件的通用操作方法3.2.1 文件描述符,7,3.2.1,文件描述符,在,Linux,下用文件描述符,来,表示设备文件和普通文件,。

    文件描述符是一个整型的数据,所有对文件的操作都通过文件描述符实现文件描述符的范围是,0,OPEN_MAX,在,Linux,系统中有,3,个已经分配的文件描述符,即,标准输入、标准输出和标准错误,,它们,文件描述符的值分别为,0,、,1,和,2,3.2.1 文件描述符在Linux下用文件描述符来表示设备,8,Linux,通过文件描述符操作文件的原理,Linux通过文件描述符操作文件的原理,9,linux教程-第3章-文件系统简介课件,10,3.2.2,打开创建文件,open(),、,create(),函数,使用这些函数需要头文件:,sys/types.h,、,sys/stat.h,、,fcntl.h,1,函数,open(),、,create(),介绍,2,使用函数,open(),的例子,3.2.2 打开创建文件open()、create()函数,11,1,函数,open(),、,create(),介绍,P.73,int open(const char,*,pathname,int flags);,int open(const char,*,pathname,int flags,mode_t mode);,1函数open()、create()介绍 P.73int,12,1,函数,open(),、,create(),介绍,P.73,int open(const char,*,pathname,int flags);,int open(const char,*,pathname,int flags,mode_t mode);,1函数open()、create()介绍 P.73int,13,1,函数,open(),、,create(),介绍,P.73,int open(const char,*,pathname,int flags,mode_t mode);,1函数open()、create()介绍 P.73int,14,2,使用函数,open(),的例子,10fd=open(filename,O_RDWR);/*,打开文件为可读写方式*,/,2使用函数open()的例子10fd=open(f,15,3.2.3,关闭文件,close(),函数,close(),函数关闭一个打开的文件,之前打开文件所占用的资源。

    1,close(),函数,介绍,2,close(),函数的例子,3.2.3 关闭文件close()函数close()函数关,16,1,close(),函数介绍,close(),函数的原型如下:,#include,int close(int fd);,1close()函数介绍close()函数的原型如下:,17,3.2.4,读取文件,read(),函数,用,read(),函数从打开文件中读数据,用户可以对读入的数据进行操作1,read(),函数,介绍,2,read(),函数的例子,3.2.4 读取文件read()函数用read()函数从打,18,1,read(),函数介绍,使用这个函数需要将头文件,unistd.h,加入read(),函数的原型定义格式如下ssize_t read(int fd,void,*,buf,size_t count);,1read()函数介绍使用这个函数需要将头文件unistd,19,2,read(),函数的例子,fd=open(filename,O_RDONLY);,2read()函数的例子,20,3.2.5,写文件,write(),函数,write(),函数向打开的文件中写入数据,将用户的数据保存到文件中。

    1,write(),函数,介绍,2,write(),函数的例子,3.2.5 写文件write()函数write()函数向打,21,1,write(),函数介绍,write(),的函数原型如下include,ssize_t write(int fd,const void,*,buf,size_t count);,函数操作成功会返回写入的字节数,当出错的时候返回,1,出错的原因有多种,像磁盘已满,或者文件大小超出系统的设置,例如,ext2,下的文件大小限制为,2Gbytes,等1write()函数介绍write()的函数原型如下22,2,write(),函数的例子,23,size,=write(fd,buf,strlen(buf);/*,将数据写入到文件,test.txt,中*,/,2write()函数的例子,23,3.2.7,获得文件状态,fstat(),函数,有的时候对文件操作的目的不是读写文件,而是要获得文件的状态例如,获得目标文件的大小、权限、时间等信息stat,信息大多来自,i,节点1,fstat(),函数,介绍,2,stat(),函数的例子,3.2.7 获得文件状态fstat()函数有的时候对文件操,24,1,fstat(),函数介绍,在程序设计的时候经常要用到文件的一些特性值,例如,文件的所有者、文件的修改时间、文件的大小等。

    stat(),函数、,fstat(),函数和,lstat(),函数可以获得文件的状态,其函数原型如下:,#include,#include,#include,int stat(const char,*,path,struct stat,*,buf);,int fstat(int filedes,struct stat,*,buf);,int lstat(const char,*,path,struct stat,*,buf);,1fstat()函数介绍在程序设计的时候经常要用到文件的一,25,2,stat(),函数的例子,P.84,struct stat st;,if(-1=stat(test.txt,&st)/*,获得文件的状态,将状态值放入,st,中*,/,2stat()函数的例子 P.84,26,3.2.8*,文件空间映射,mmap(),函数,mmap(),函数将文件映射到内存中的某一段,内存比磁盘快些映射到的内存并不占用空间,仅仅占用一段地址空间1,mmap(),函数,介绍,2,munmap(),函数,介绍,3,mmap(),函数和,munmap(),函数的例子,3.2.8*文件空间映射mmap()函数mmap()函数,27,1,mmap(),函数介绍,mmap(),函数的原型如下。

    include,void,*,mmap(void,*,start,size_t length,int prot,int flags,int fd,off_t offset);,1mmap()函数介绍mmap()函数的原型如下28,2,munmap(),函数介绍,与,mmap(),函数对应的函数是,munmap(),函数,它的作用是取消,mmap(),函数的映射关系其函数原型如下:,#include,int munmap(void,*,start,size_t length);,2munmap()函数介绍与mmap()函数对应的函数是m,29,3,mmap(),函数和,munmap(),函数的例子,29ptr=(char*)mmap(NULL,FILELENGTH,PROT_READ|,PROT_WRITE,MAP_SHARED,fd,0,);,37,munmap(ptr,FILELENGTH);,/*,取消文件映射关系*,/,3mmap()函数和munmap()函数的例子,30,3.2.9,文件属性,fcntl(),函数,fcntl(),函数用于获得和改变已经打开文件的性质1,fcntl(),函数,介绍,2,F_GETFL,的,例子,3,F_SETFL,的,例子,4,F_GETOWN,的,例子,5,F_SETOWN,的例子,3.2.9 文件属性fcntl()函数fcntl()函数用,31,1,fcntl(),函数介绍,fcntl(),函数向打开的文件,fd,发送命令,更改其属性。

    函数原型如下:,#include,#include,int fcntl(int fd,int cmd);,int fcntl(int fd,int cmd,long arg);,int fcntl(int fd,int cmd,struct flock,*,lock);,1fcntl()函数介绍fcntl()函数向打开的文件fd,32,2,F_GETFL,的例子,(,P.89 fcntl-01.c),10,flags=fcntl(0,F_GETFL,0);,/,*获得标准输入的状态的状态*,/,if(flags 0),/*错误发生*/,printf(failure to use fcntln);,return-1;,accmode=flags/*获得访问模式*/,2F_GETFL的例子(P.89 fcntl-01.c),33,3,F_SETFL,的例子,P.90 fcntl-02.c,:用,fcntl,修改文件状态,加上,“,修改状态,”,int fd=open(test.txt,O_RDWR);,flags=fcntl(fd,F_GETFL,0);/*获得文件状态*/,flags|=O_APPEND;/*增加状态为可追加*/,flags=fcntl(fd,F_。

    点击阅读更多内容
    卖家[上传人]:vc42v63p
    资质:实名认证
    相关文档
    正为您匹配相似的精品文档