- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux环境高级编程实验报告1
作 业 报 告 学生姓名: 学 号: 指导教师: 学生E-mail: 一、作业名称 O_APPEND与读操作 二、作业要求 使用Linux API进行文件操作时,首先会使用open/creat打开或创建一个文件,接着使用lseek指定从什么地方开始进行文件的读写,之后即可调用read/write读写文件,最后文件读写完毕,调用close关闭文件。对于open函数,可以通过函数原型中的第二个参数来控制文件打开的模式,其中O_APPEND标志表示以该模式打开文件时,每次写的数据都会放在文件尾部,这点也以通过课堂实验验证了其正确性。 那么本文是通过自行设计程序验证以下两点: ①、以O_APPEND模式打开文件后,能否再用lseek改变文件偏移量; ②、若能够用lseek改变文件偏移量,读操作会如何进行,是否像写操作那样,每次都从文件尾部读,或者其他方式。 三、设计与实现 思路如下:首先以O_APPEND方式打开一个文件,使用lseek多次修改文件的偏移量,并记录每次修改后的文件偏移量,最后进行比较,得出结论:若修改后的偏移量改变,说明以O_APPEND方式打开文件,仍能够用lseek改变文件偏移量。反之则不成立。另外,在每次lseek对偏移量进行修改后,进行读操作,比较读出的结果来判断具体的读操作。 四、测试 测试过程如下: 以O_APPEND方式打开文件(测试文件text1.txt以创建): int fd=open(ex1_test.txt,O_RDWR|O_APPEND); 第一次用lseek修改偏移量,进行读操作: off_t CurrentPosition1=lseek(fd,0,SEEK_CUR); coutFirst CurrentPosition is:CurrentPosition1endl; read(fd,word_read1,sizeof(word_read1)); 实际上未修改,打印打开后文件当前偏移量,读出文件的第一个字符。 第二次用lseek修改偏移量,进行读操作: off_t CurrentPosition2=lseek(fd,9,SEEK_CUR); read(fd,word_read2,sizeof(word_read2)); 这次从当前偏移量向后移动9个字节,读出字符。 第三次用lseek修改偏移量,进行读操作: off_t CurrentPosition3=lseek(fd,2,SEEK_SET); read(fd,word_read3,sizeof(word_read3)); 这次从文件头向后移动2个字节的偏移量,读出字符。 测试结果如图4-1所示: 图4-1 测试程序的运行结果 从图4-1所示的运行结果可以看出,三次不同的???移量修改后,文件偏移量不同,说明以O_APPEND方式打开文件,仍然能够用lseek修改偏移量。而三次读出的结果也都不同,说明以O_APPEND方式打开文件后,可以从任意位置进行文件的读操作。 五、对本课程或本作业的建议和意见 作业一是对文件操作的练习,该部分是后面实现日志的基础,主要利用到Linux提供的API函数进行文件操作。关键之处在于三点:1、对于新接触的内容,要学会与过去内容进行对比学习;2、要思考本质问题,并提出一些质疑;3、对于提出的问题可以作出一些判断,最重要的是动手去验证这些问题。 建议:课时等原因的限制,整个课程的学习进度比较快,不过还是希望讲解慢点,尤其是晚上的课时,注意力很难集中。 六、附录 int main(){ char word_read1,word_read2,word_read3; //记录读出字符 int fd=open(ex1_test.txt,O_RDWR|O_APPEND);//O_APPEND方式打开文件 if(fd==-1){ ……………………………… } off_t CurrentPosition1=lseek(fd,0,SEEK_CUR);//第一次修改偏移量并记录 if(CurrentPosition1==-1){ ……………………………… } coutFirst CurrentPosition is:CurrentPosition1endl;//打印出第一次修改 if(read(fd,word_read1,sizeof(word_read1))==-1){ //第一次读 ……………………………… } coutRead the word firstly is: word_read1en
文档评论(0)