1linux系统调用和文件IO(ppt).pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:18 大小:339KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

1linux系统调用和文件IO(ppt).pdf

1linux系统调用和文件IO(ppt).pdf

预览

免费试读已结束,剩余 8 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

文件操作主讲人::李奎李奎本章学习目标•文件操作在在linuxlinuxlinux系统编程中系统编程中,,通过通过linuxlinux系统调用系统调用操作文件,完成本章学习应该能够通过linuxlinux系统调用系统调用操作文件以下部分:•创建文件•读和写文件•更新文件内容文件操作理论及原理介绍•LinuxLinux系统调用系统调用所谓系统调用是操作系统提供给用户程序的一组““特殊特殊”接口,,用户程序可以通过这组用户程序可以通过这组““特殊特殊””接口来获得操作系接口来获得操作系统内核提供的特殊服务。。在在在linuxlinux中用户程序不能直接访问内核提供的服务,,为了更好的保护内核空间为了更好的保护内核空间,,将程序的运将程序的运行空间分为内核空间和用户空间,,它们运行在不同的级别它们运行在不同的级别上上,,,在逻辑上是相互隔离的在逻辑上是相互隔离的。用户程序接口((APIAPIAPI))在在linuxlinuxlinux中用户编程接口中用户编程接口((APIAPIAPI)))遵循了在遵循了在UNIXUNIX中最流行的中最流行的应用编程界面标准——POSIXPOSIXPOSIX标准标准。这些系统调用编程接口主要通过CCC库C库库(((libc.solibc.solibc.so)))实现的实现的。系统调用、、APIAPIAPI与系统命令之间的关系与系统命令之间的关系文件I/OI/O函数函数•可用的文件I/OO函数函数打开文件、、读文件读文件、、写文件等等写文件等等。大多数linuxlinux文件文件I/OO只需用到只需用到555个函数5个函数:openopen、、、readreadread、、writewrite、、、lseeklseek以及closeclose。。openopen函数函数#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>intopen(constchar*pathname,intoflag,……/*,/*,mode_tmode*/);返回::若成功为文件描述符若成功为文件描述符,,若出错为若出错为---1-111文件描述符对于内核而言,,所有打开文件都由文件描述符引用所有打开文件都由文件描述符引用。。文件文件描述符是一个非负整数。。当打开一个现存文件或创建一个当打开一个现存文件或创建一个新文件时,,内核向进程返回一个文件描述符内核向进程返回一个文件描述符。。当读当读、、写一写一个文件时,,用用open返回的文件描述符标识该文件,将其作为参数传送给read或write。在在PPOSIX.11应用程序中应用程序中,,整数整数000、0、、1111、、、2222应被代换成符应被代换成符号常数:STDIN_FILENOSTDOUT_FILENOSTDERR_FILENO这些常数都定义在头文件<unistd.h><unistd.h>中中中。。文件描述符的范围是0~OPEN_MAX。。早期的早期的UNIX版本采用的上限值是19((允许每个进程打开允许每个进程打开200个文件个文件))),),现在很多系统则将其增加至256。openopen函数说明函数说明参数pathname指向想要打开的文件路径字符串。参数flags表示打开文件的方式,,例如例如:O_RDONLY以只读方式打开文件O_WRONLY以只写方式打开文件O_RDWR以读写方式打开文件以上三种打开方式是互斥的,,即即即flagsflagsflags只能选择一种只能选择一种,但可以利用’’||||’’’运算符组合运算符组合。O_APPEND每次写时都加到文件的尾端。O_CREAT若此文件不存在则创建它。。使用此选择项时使用此选择项时,,需需同时说明第三个参数modemode,,,用其说明该新文件的存取许可用其说明该新文件的存取许可权位。O_EXCL如果同时指定了O_CREATO_CREAT,,,而文件已经存在而文件已经存在,,则出则出错错。。。这可测试一个文件是否存在这可测试一个文件是否存在,,如果不存在则创建此文如果不存在则创建此文件成为一个原子操作。O_TRUNC如果此文件存在,,而且为只读或只写成功打开而且为只读或只写成功打开,则将其长度截短为000。0。perrorperror函数说明函数说明#include<stdio.h>voidperror(constchar*s);函数说明:–perrorperror函数用来将上一个函数发生的错误的原因输出到标准错误((stderrstderrstderr)。)。参数