- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
低级文件I/O2022/1/28?1
系统调用open( ) read( ) write( )lseek( ) dup( ) dup2()fcntl( ) lockf( ) flock( )ioctl( ) close( )2022/1/28?2
文件描述当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。当读写一个文件时,用open或creat返回的文件描述符标识该文件,将其作为参数传送给readwritelseek和close等。按照惯例,UNIX shell使文件描述符:0stdin 1stdout 2stderr在POSIX.1应用程序中,标准I/O描述符被定义为:0STDIN_FILENO; 1STDOUT_FILENO; 2STDERR_ FILENO这些常数都定义在头文件unistd.h中。文件描述符的范围是0 ~ OPEN_MAX。早期的UNIX版本采用的上限值是1 9 (即2 0),现在很多系统则将其增加至256且可以以内核参数的办法设置,比方说1024。2022/1/28?3
原始系统数据类型在UNIX/Linux的开发过程中用到的以_t结尾的数据为系统原始数据。系统原始数据在头文件sys/types.h中被定义。2022/1/28?4
出错处理UNIX函数出错时,往常返回一个负值,而且整型变量errno通常设置为具有特定信息的一个值。例如,open函数如成功执行则返回一个非负文件描述符,如出错则返回1。在open出错时,有大约1 5种不同的errno值。某些函数并不返回负值而是使用另一种约定。例如,返回一个指向对象的指针的大多数函数,在出错时,将返回一个null指针(NULL)。文件errno.h 中定义了变量errno以及可以赋与它的各种常数。这些常数都以E开头。在Linux系统中,errno定义在头文件/usr/include/asm/errno.h,多达124条。2022/1/28?5
errnoPOSIX定义errno为:extern int errno;对于errno应当知道两条规则:1:如果没有出错,则其值不会被一个例程清除。因此,仅当函数的返回值指明出错时,才检验其值。2:任一函数都不会将errno值设置为0,在errno.h中定义的所有常数都不为0。2022/1/28?6
错误处理的标准函数strerror( ):功能:以字符串方式打印错误信息。用法:#include string.hchar *strerror(int errnum);返回:指向消息字符串的指针。perror()功能:在标准错误上产生一条基于其参数串和errno的当前值出错消息。用法:#include stdio.hvoid perror(const char * msg);输出:首先输出由msg指向的字符串,然后是一个冒号,一个空格,然后是对应于errno值的出错信息,然后是一个新行符。2022/1/28?7
处理错误的示例1#include stdio.h#include errno.hmain(int argc, char *argv[ ]) { fprintf(stderr,EACCES=%d: %s\n,EACCES, strerror(EACCES)); errno=ENOENT; perror(argv[0]);}结果:假设,编译后生成a.out,则输出为:EACCES=13: Permission denied./a.out: No such file or directory2022/1/28?8
处理错误的示例2#include error.h#include fcntl.hmain(int argc, char *argv[ ]){ int i, fd; for(i=1; i argc; i++){ if((fd=open(argv[i],O_RDWR))==1) perror(argv[i]); else close(fd); }}2022/1/28?9
open功能:打开或创建一个文件,并返回一个文件描述符。用方:#include sys/types.h#include sys/stat.h#include fcntl.hint open(const char *name, int oflag) ;int open(const char *ame, int oflag, mode_t mode ) ;返回值:成功时为文件描述符,出错则为1。出错时errno被设置。2022/1/28?10
open的参数pathname是要打开或创建的文件的名字。oflag参数可用来说明此函数的多个选择项。用下列一个或多个常数进行或运算构成oflag参数(在fcntl.
您可能关注的文档
最近下载
- 江西电力职业技术学院单招职业倾向性考试题库含答案详解(预热题).docx VIP
- 江西电力职业技术学院单招职业倾向性考试题库及答案详解(真题汇编).docx VIP
- 6.23北京对流暴雨中尺度环境时空演变特征及影响因子分析.pdf VIP
- 大学美育(第2版):书法美PPT教学课件.pptx
- icu医院感染工作计划.docx VIP
- 江西电力职业技术学院单招职业适应性考试题库及答案详解(历年真题).docx VIP
- 表面助剂:有机硅-丙烯酸酯-蜡类.ppt VIP
- 南通大学《线性代数》2021-2022学年第一学期期末试卷.pdf VIP
- 2025年复变函数14套题目和答案.pdf VIP
- 高级英语(第四版)1_教学课件Lesson 1 Face to Face with Hurricane Camille.ppt VIP
原创力文档


文档评论(0)