Linux文件操纵.docVIP

  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文件操纵

创建文件 int creat(filename,mode) 成功返回文件描述符,失败返回-1 等效于open(filename,O_CREAT | O_WRONLY | O_TRUNC,mode),二者成功都返回文件描述符 打开文件 int open(filename, flags) int open(filename, flags, mode) 成功:返回文件描述符 失败:返回-1 flags文件打开标志 在fcntl.h中定义宏 O_RDONLY:只读方式打开 O_WRONLY:只写方式打开 O_RDWR:读写方式打开 O_APPEND:追加方式打开,原子操作,内核每次对该文件读写之前都将 偏移量设置到文件尾端,避免多进程操作时写入的内容重叠交错 O_CREAT:创建一个文件,激活mode参数的使用(可以不用) O_EXCL:使用了O_CREAT时,文件已存在就报错(不是自动报错) O_NOBLOCK:非阻塞方式打开文件 O_TRUNC:如果文件已经存在,删除文件内容 注解:1、在任何情况下O_RDONLY/O_WRONLY/O_RDWR不能相互组合(以“|”)的方式组合 2、open(test.txt,O_CREAT | O_RDWR)等同test.txt文件存在时open(test.txt,O_RDWR) 3、open(test.txt,O_CREAT)可以在没有文件时创建文件 mode文件访问权限 S_I(R/W/X)(USR/GRP/OTH) ▲其中R/W/X分别表示读/写/可执行权限 ▲USR/GRP/OTH分别表示用户/组/其他人 S_IRWXG:组可读、写、执行 S_IRWXO:其他人可读、写、执行 S_ISUID:设置用户执行ID S_ISGID:设置组的执行ID 注解:1、以上选择项是sys/stat.h文件中定义的宏,可以通过“|”相互组合,决定文件访问权限 2、也可以用5个八进制数表示 第1位:设置用户ID (1有效0无效) 第2位:设置组ID (1有效0无效) 第3位:用户权限 (1执行权限、2写权限、4读权限、0无)(需要求和) 第4位:组的权限 (1执行权限、2写权限、4读权限、0无)(需要求和) 第5位:其他人的权限 (1执行权限、2写权限、4读权限、0无)(需要求和) 3、open(test.txt,O_CREAT,10 705)创建一个用户可读可写可执行,其他人可读可执行,组 无权限,分析10705如下 1(设置用户ID),0(不设置组ID),7(1+2+4读、写、执行),0(没权限),5(1+4读、执行) 文件操作函数 #include unistd.h int close (文件描述符) 成功返回0失败返回-1 当一个进程终止时,内核自动关闭它所有打开的文件,关闭一个文件时会释放该进程加在该文件上的所有记录锁 int lseek (文件描述符,偏移量,相对位置) 成功返回新的文件偏移量(相对于头部的),失败返回-1 文件相对位置,宏定义在unistd.h中 SEEK_SET 文件开始处 (宏定义为0) SEEK_CUR 当前位置 (宏定义为1) SEEK_END 文件末尾处 (宏定义为2) lseek (文件描述符,0,SEEK_END)返回文件的长度 lseek(文件描述符,-5,SEEK_END)文件末尾向前偏移5个字节 lseek(文件描述符,5,SEEK_END)偏移之后写入字符,在写入的内容与原来的文件末尾处之间有一段空洞,就是不占用磁盘空间的空档,用vi编辑器查看该文件的空档是乱码,gedtid是打不开该文件了,因为编码不正确 注解:文件头部是不能往前偏移的,否则lseek会执行错误返回-1 int read(文件描述符,*buf,要读的字节数) 成功返回读到的字节数,失败返回-1,已到文件结尾返回0 当文件偏移量已经到文件结尾,则read返回0 当要读取的长度大于文件长度时,read返回实际读到的字符长度 注解:在read函数正常执行时(未返回-1时),文件偏移量将增加实际读到的字节数,例如对同一文件连续执行两次read函数读出来的内容相互衔接 int write(文件描述符,*buf,要写入的字节数) 成功返回已写的字节数,失败返回-1 注解:正常情况下write返回值应该和要写入的字节数相同,否则表示出错,write出错的一个常见原因是磁盘已满,或者超过一个给定进程的文件长度限制 write和read函数要读写的字节数

文档评论(0)

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

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

1亿VIP精品文档

相关文档