Linux文件系统调用.ppt

Linux文件系统调用.ppt

ID:48049285

大小:114.50 KB

页数:24页

时间:2020-01-13

Linux文件系统调用.ppt_第1页
Linux文件系统调用.ppt_第2页
Linux文件系统调用.ppt_第3页
Linux文件系统调用.ppt_第4页
Linux文件系统调用.ppt_第5页
资源描述:

《Linux文件系统调用.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、10.4.1文件描述符10.4.2open和close系统调用10.4.3read和write系统调用(在C中是fread和fwrite)10.4.4lseek系统调用(在C中是fseek)10.4.5访问和显示文件元数据10.4.6目录10.4文件系统调用10.4.1文件描述符特殊文件描述符:进程开始运行时自动打开的三个文件(文件描述符表前三项)0:STDIN_FILENO标准输入1:STDOUT_FILENO标准输出2:STDERR_FILENO标准错误输出文件描述符的应用打开文件,得到文件的文件描述符通过

2、文件描述符对文件进行读写等操作通过文件描述符关闭文件POSIX表示可移植操作系统接口,最初开发POSIX标准,是为了提高UNIX环境下应用程序的可移植性。文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。文件描述符的缺点:不能移植到UNIX以外的系统上去,也不直观。必须通过文件描述符对文件进行操作,是FILE结构类型的一个成员。文件描述符用户进程A连续三次打开文件fd1=open(“/etc/passwd”,O_RDONLY);//只读fd2=open(“local”,O_RDW

3、R);//读写fd3=open(“/etc/passwd”,O_WRONLY);//只写得到三个文件描述符:fd1:3;fd2:4;fd3:5一个文件可以被某个进程多次打开,得到一个文件标识号。它们的file中的f_inode都指向同一个inode。10.4.2open和close系统调用intopen(constchar*pathname,intflags);intopen(constchar*pathname,intflags,mode_tmode);pathname:要打开的文件名flags:打开文件方式

4、mode:文件的存取权限标志(flags)含义O_RDONLY只读O_WRONLY只写O_RDWR读写O_APPEND追加O_CREAT创建一个文件O_TRUNC如果文件已经存在,则删除文件的内容……open(pathname,O_CREAT

5、O_WRONLY

6、O_TRUNC,mode)等同creat()返回值:成功返回最小可用的文件描述符,否则返回-1modeS_IRWXUS_IXUSRS_IWUSRS_IRUSRS_IRGRPS_IROTH用户可以读用户可以写用户可以读、写、执行组可以读其他人可以读用户可以

7、执行标志含义……可以用5个数字来表示文件的各种权限:要创建一个用户可读、可写、可执行,但是组没有权限,其他人可以读、可以执行的文件,并设置用户ID位。1(设置用户ID)、0(不设置组ID)、7(1+2+4,读、写、执行)、0(没有权限)、5(1+4,读、执行)----10705open("test",O_CREAT,S_IRWXU

8、S_IROTH

9、S_IXOTH

10、S_ISUID);open("test",O_CREAT,10705);close系统调用fd:要关闭的文件描述符返回值:成功返回0,失败返回-1关闭

11、文件时,内核作相应处理对文件在系统打开文件表中的引用计数减1,如果减为0,则释放该文件描述项,使其为空闲可用项。对文件inode索引节点中的引用计数减1。释放该文件的文件描述符当一个进程终止时,内核会自动检查并回收该进程所有的文件描述符,用户不必显式地调用close。intclose(intfd);10.4.3read和write系统调用intread(intfd,constvoid*buf,size_tlength)intwrite(intfd,constvoid*buf,size_tlength)buf:指

12、向缓冲区的指针length:缓冲区的大小(以字节为单位)。返回值:成功:实际读写的字节数。失败:返回-1。read:从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中。write:把length个字节从buf指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。出错信息的处理全局变量errno:当LinuxCAPI函数发生异常时,会将errno变量赋一个整数值不同的值表示不同的含义,通过查看该值推测出错的原因。#include #include

13、tring.h> #includeintmain(void) {int  fd;externinterrno;if((fd=open("no/such/file",0))<0){   printf("errno=%d\n",errno);  char*mesg=strerror(errno);printf("Mesg:%s\n",mesg);}}stdout--标准输

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。