嵌入式高级编程文件操作.pptVIP

  1. 1、本文档共26页,可阅读全部内容。
  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文档。上传文档
查看更多
read函数 有多种情况可使实际读到的字节数少于要求读字节数: 读普通文件时,在读到要求字节数之前已到达了文件尾端。例如,若在到达文件尾端之前还有3 0个字节,而要求读1 0 0个字节,则r e a d返回3 0,下一次再调用r e a d时,它将返回0 (文件尾端)。 当从终端设备读时,通常以行为单位,读到换行符就返回。 当从网络读时,网络中的缓冲机构可能造成返回值小于所要求读的字节数。 某些面向记录的设备,例如磁带,一次最多返回一个记录。 读操作从文件的当前位移量处开始,在成功返回之前,该位移量增加实际读得的字节数。 write函数 用w r i t e函数向打开文件写数据。 #include unistd.h ssize_t write(int filedes, const void * buff, size_t nbytes) ; 返回:若成功为已写的字节数,若出错为- 1。 其返回值通常与参数nbytes的值不同,否则表示出错。w r i t e出错的一个常见原因是:磁盘已写满,或者超过了对一个给定进程的文件长度限制。 对于普通文件,写操作从文件的当前位移量处开始。如果在打开该文件时,指定了O _ A P P E N D选择项,则在每次写操作之前,将文件位移量设置在文件的当前结尾处。在一次成功写之后,该文件位移量增加实际写的字节数。 dup和dup2函数 dup和dup2都可以用来复制一个现存的文件描述符,使两个文件描述符指向同一个File object。 #include unistd.h int dup(int oldfd); //3 4 由dup返回的新文件描述符一定是当前可用文件描述符中的最小数值。 int dup2(int oldfd, int newfd); dup2可以用newfd指定新描述符的数值。如果newfd已经打开,则先将其关闭。如若oldfd等于newfd则返回newfd,而不关闭它。 返回值:若成功则返回新的文件描述符,若出错则返回-1 #includeunistd.h #includesys/stat.h #includefcntl.h #includestdio.h #includestdlib.h #includestring.h int main(void){ int fd, save_fd; char msg[]=This is a test\n; fd= open(“somefile”,O_RDWR|O_CREAT,S_IRUSR|S_IWUSR); //打开somefile文件,给fd标识符 if(fd0){ //打不开文件则退出程序 perror(open); exit(1); } save_fd = dup(STDOUT_FILENO); //把标准输出的标识符赋值给save_fd=1 dup2(fd,STDOUT_FILENO); //把STDOUT_FILENO标准输入流入文件中 close(fd); write(STDOUT_FILENO,msg,strlen(msg)); //往somefile文件里写msg dup2(save_fd,STDOUT_FILENO); write(STDOUT_FILENO,msg,strlen(msg)); //往标准输出标识符写msg,才有屏幕输出 close(fd); return 0; } 作业: 1.从标准输入往文件里写 #include unistd.h #include sys/stat.h #include sys/types.h #include fcntl.h int main(){ int n; char buf[50]; n=read(STDIN_FILENO,buf,50); int fd=open(input.txt,O_WRONLY); write(fd,buf,n); close(fd); } 2.复制文件 #include sys/types.h #include sys/stat.h #include fcntl.h int main(){ char arr[50]; int i=open(test.txt,O_RDONLY); int f=read(i,arr,

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档