实验5Linux文件操作之带缓存和非缓冲文件的读写.docxVIP

实验5Linux文件操作之带缓存和非缓冲文件的读写.docx

  1. 1、本文档共11页,可阅读全部内容。
  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文档。上传文档
查看更多
实验5Linux文件操作之带缓存和非缓冲文件的读写

实验5Linux文件操作之带缓存和非缓冲文件的读写学生姓名:王祥真学号:6103114095专业班级:计科143实验类型:□ 验证?综合 □ 设计 □ 创新实验日期:2017.4.20实验成绩:一.实验目的通过编写文件读写及上锁的程序,进一步熟悉 Linux 中文件 I/O 相关的应用开发, 并且熟练掌握 open()、read()、write()、fcntl()等函数的使用。二.实验内容1.用write, read, open等系统调用编写分别实现如下功能的程序(要求进行必要的出错检查):(1)创建一个文件testfile.txt,文件内容从键盘输入;(2)将testfile.txt的内容显示在屏幕上,并将testfile.txt的内容复制到一个新的文件file2.txt中。实验代码:#includeunistd.h#includesys/types.h#includesys/stat.h#includefcntl.h#includestdio.h#includestdlib.h#includestdio.h#includestring.hint main(){ int fd, fdsrc,fddes,nbytes; int newret ,n1,n2; int flags=O_CREAT | O_TRUNC | O_WRONLY; char src[50],des[30],buf[30]; char str1[60]; char str2[60]; strcat(str1,cat ); printf(请输入要创建的源文件名字); scanf(%s,src); fd=creat(src,S_IRUSR|S_IWUSR); //创建源文件 n1=read(STDIN_FILENO,buf,80); if(n10){ perror(read STDIN_FILENO); exit(1); } fdsrc=open(src,flags,0644); //以读写方式打开 if(fdsrc0){ exit(1); } write(fdsrc,buf,n1);//写入 printf(输出刚创建源文件的内容\n); strcat(str1,src);//cat src; newret=system(str1);//执行命令 close(fdsrc);// 关闭指针 printf(请输入目标文件名: ); scanf(%s,des); fd=creat(des,S_IRUSR|S_IWUSR); fdsrc=open(src,O_RDONLY); if(fdsrc0){ exit(1); } fddes=open(des,flags,0744); if(fddes0){ exit(1); } while((nbytes=read(fdsrc,buf,20))0){ int z=write(fddes,buf,nbytes); if(z0){ perror(写文件出错); } } close(fdsrc); close(fddes); printf(复制%s文件到%s文件成功!\n,src,des); return 0;}实验结果:2. 在 Linux 中 FIFO 是一种进程之间的管道通信机制。Linux 支持完整的 FIFO通信 机制。 本实验内容,通过使用文件操作,仿真 FIFO(先进先出)结构以及生产者-消费者运行模型。 本实验中需要打开两个虚拟终端,分别运行生产者程序(producer)和消费者程序(customer)。此时两个进程同时对同一个文件进行读写操作。因为这个文件是临界资源,所以可以使用文件锁机制来保证两个进程对文件的访问都是原子操作。 先启动生产者进程,它负责创建仿真 FIFO 结构的文件(其实是一个普通文件)并投入生产,就是按照给定的时间间隔,向 FIFO 文件写入自动生成的字符(在程序中用宏定义选择使用数字还是使用英文字符),生产周期以及要生产的资源数通过参数传递给进程(默认生产周期为 1s,要生产的资源数为 10 个字符)。 后启动的消费者进程按照给定的数目进行消费,首先从文件中读取相应数目的字符并在屏幕上显示,然后从文件中删除刚才消费过的数据。为了仿真 FIFO 结构,此时需要使用两次复制来实现文件内容的偏移。每次消费的资源数通过参数传递给进程,默认值为10 个字符。 三.实验环境PC微机Wind

文档评论(0)

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

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

1亿VIP精品文档

相关文档