网站大量收购闲置独家精品文档,联系QQ:2885784924

Linux环境高级编程:文件IO.pdfVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux环境高级编程:文件IO

Linux环境高级编程 :文件IO - xiahouzuoxin - 博客频道 - CSDN.N T 这里提到的文件IO操作指不带缓存的IO操作 ,也就是说这里提到的函数的实现都是通过系统调用实现 的 ,而不是直接对IO端口操作实现的。 1、文件描述符 (File Discriptor ,fd )——Linux文件的身份证号码 文件描述符是一个非负的整数 ,当打开一个文件或创建一个文件时 ,内核向进程返回一个标识该文件 的整数 ,即fd。注意 ,若文件不被创建打开 (即没有载入进程 ),是没有文件描述符可言的。 必需明确一个概念 :LInux中的一切即是文件。因此对于特殊的文件有特殊的文件描述符。 特殊文件描述符 :0——标准输入 ,1——标准输出 ,2——标准错误输出。 2、open函数 #include int open(const char *pathname, int oflag, mode_t mode); 返回值 :文件描述符fd oflag可选值 : (1 )不能进行或运算的选项 O_RDONLY O_WRONLY O_RDWR (2 )可进行或运算选项 O_A PP ND :追加 O_CR AT :若文件不存在则创建 ,只有此时mode参数有效 O_ XCL :如果同时指定了O_CR AT ,而文件又存在 ,则出错 O_TRUNC O_NOCTTY O_NONBLOCK :FIFO/快特殊文件/字符文件 中使用 O_SYNC :使每次write操作都等待到物理IO操作完成 ,使用该项 ,可能耗时更长 注 : 另有creat函数可创建文件 ,int creat(const char *pathname, mode_t mode) 等效于open(pathname, O_WRONLY|OCR AT|O_TRUNC, mode) 3、read 函数 #include ssize_t read(int fd, void *buff, size_t nbytes); 返回值 :成功读取字节数 fd :打开文件时的文件描述符 4、write函数 #include ssize_t write(int fd, void *buff, size_t nbytes); 返回值 :成功写入的字节数 fd :打开文件时的文件描述符 5、lseek函数——操纵文件偏移量 #include #include off_t lseek(int fd, off_t offset, int whence); 返回值 :若执行成功 ,返回新的文件位移量 ;如果fd为FIFO或管道文件 ,则返回-1 ,并保存errno= PIP whence取值 : S K_S T :offset为相对文件头的偏移量 S K_CUR :offset为相对当前位置的偏移量 S K_ ND :offset为相对文件尾的偏移量 6、fcntl函数——读取修改文件属性 #include #include #include int fcntl(int fd, int cmd, .../* int arg */); 返回值 :失败则返回-1 fcntl函数的5种功能 : (1 )复制一个现存的描述符 (cmd=F_DUPFD ) (2 )获得/设置文件描述符标记 (cmd=F_G TFD/ F_S TFD ) (3 )获得/设置文件状态标记 (cmd=F_G TFL/ FS TFL )——open函数中的oflag参数 (4 )获得/设置异步IO权限 (cmd=F_G TOWN/ F_S TOWN ) (5 )获得/设置记录锁 (cmd=F_G TLK/ F_S TLK/ F_S TLKW ) 7、打开文件的内核数据结构 每个打开文件都在进程表项中文件描述符表 (文件的fd、指向文件表项的指针 );文件表项包括文件状态 标志、文件当前偏移量、指向该文件v节点表项的指针 ;v节点表项包含了文件的v节点信息 ,i节点信息和文 件长度等信息。 了解打开文件的内核数据结构对了解文件共享很有帮助。 lseek函数操作的文件偏移量 (offset )应该是在文件表当中。 2个进程同时打开同一个文件 ,则同一个文件会对应2个不同的文件描述符 ,文件描述符是与进程相关联 的。 8、程序实例 (1 )文件读写——实例1 [cpp] view plain copy print ? 01. 18 #includ

文档评论(0)

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

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

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档