第四课-文件编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LINUX环境编程 ---文件编程 6.2 打开文件的内核数据结构 * 首页 上页 返回 下页 * 文件I/O 文件与目录操作 标准I/O 实战练习 课程内容 引言 open函数 create函数 close函数 lseek函数 read函数 write函数 文件共享 dup和dup2函数 fcntl函数 ioctl函数 文件I/O 引言 大多数U N I X文件I / O只需用到5个函数:o p e n、r e a d、w r i t e、lseek 以及c l o s e。然后说明不同缓存器长度对re a d和w r i t e函数的影响。 本课所说明的函数经常被称之为不带缓存的I / O(u n b u ffered I/O,与将在第5章中说明的标准I / O函数相对照)。不带缓存----指的是每个r e a d和w r i t e都调用内核中的一个系统调用。 这些不带缓存的I / O函数不是ANSI C的组成部分,但是是P O S I X . 1和X P G 3的组成部分。 只要涉及在多个进程间共享资源,原子操作的概念就变成非常重要。我们将通过文件I / O和传送给o p e n函数的参数来讨论此概念。并进一步讨论在多个进程间如何共享文件,并涉及内核的有关数据结构。在讨论了这些特征后,将说明d u p、f c n t l和i o c t l函数。 文件I/O-引言 文件I/O-open函数 1. open函数 调用o p e n函数可以打开或创建一个文件。 #include sys/types.h #include sys/stat.h #include fcntl.h int open(const char* pathname, int oflag,.../*, mode_t mode * / ) ; 返回:若成功为文件描述符,若出错为- 1 文件描述符:对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,用o p e n或c r e a t返回的文件描述符标识该文件,将其作为参数传送给r e a d或w r i t e。 在POSIX-1中,幻数0、1、2被代换成符号常数S T D I N _F I L E N O、S T D O U T _F I L E N O和S T D E R R_ F I L E N O,分别表示标准输入、标准输出和标准错误。这些常数都定义在头文件 u n i s t d . h 中。 任何一个进程,在启动时,系统便默认的为它打开这三个文件描述符。 文件I/O-open函数 /* stdio.c :系统定义标准输入、标准输出、标准错误示例 */ #include stdio.h #include string.h int main(int argc, char **argv) { int size; char buf[1024]; write(1, This is standard output\n, strlen(This is standard output\n)); write(1, Please input:, strlen(Please input:)); memset(buf, 0, 1024); size = read(1, buf, 1024); write(1, Your input:, strlen(Your input:)); write(1, buf, strlen(buf)); write(2, This is stderror\n, strlen(This is stderror\n)); return 0; } 文件I/O-open函数 在open函数中,我们将第三个参数写为. . .,这是ANSI C说明余下参数的数目和类型可以变化的方法。对于o p e n函数而言,仅当创建新文件时才使用第三个参数。 p a t h n a m e是要打开或创建的文件的名字。o f l a g参数可用来说明此函数的多个选择项。用下列一个或多个常数进行或运算构成o f l a g参数(这些常数定义在 f c n t l . h 头文件中): ? O_RDONLY 只读打开。 ? O_WRONLY 只写打开。 ? O_RDWR 读、写打开。 在这三个常数中应当只指定一个。下列常数则是可选择的: ? O_APPEND 每次写时都加到文件的尾端。 ? O_CREAT 若此文件不存在则创建它。使用此选择项时,需同时说明第三个参数m o d e,用其说明该新文件的存取许可权位。mode值及如何修改mode值将在后面讨论

文档评论(0)

bkqs2015 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档