版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三文件子系统文件操作实验类别:设计型 实验时数:2 学时开课单位:计算机学院计算机科学与技术系 实验地点:健翔校区计算中心一、实验目的通过本实验练习,使学生掌握有关文件管理与文件操作的内容。首先要熟悉在 LINUX 系统下文件系统的构建方法;其次要熟练掌握在 LINUX环境下用 C 语言进行高级编程的方法(即有关文件操作的系统调用的使用),进而充分了解 LINUX 文件系统中 shell 命令的实现原理以及它们用到的系统调用。二、实验环境操作系统:任何 Unix/Linux 及 Sun Solaris 或 windows 系列应用系统:gcc 编译器。若 OS 为 windows 系列,则
2、还需相应的模拟环境三、预备知识1、 关于系统调用和库函数C 语言支持一系列的库函数的调用,其中最基本的是 studio 库函数。事实上,库函数只是 C 语言在较高层次上调用的方式,系统调用是更低层次的与 C 语言的界面,是内核提供给用户调用的函数。2、 LINUX 环境下系统调用和库函数的异同(1)C 程序使用系统调用的语句和调用库函数的语句形式完全相同,但是二者运行的环境和运行机制截然不同。(2)从运行环境来看,库函数使用依赖于所运行的用户环境,程序调用库函数时,它运行的目标代码是属于程序的,程序处于“用户态”执行;而系统调用的使用不依赖于它运行的用户环境,是 LINUX 内核提供7的低层服
3、务,系统调用时所执行的代码是属于内核的,程序处于“核心态”执行。(3)程序库函数的调用最终还是要通过 LINUX 系统调用来实现,库函数一般执行一条指令,该指令(操作系统陷阱 operatingsystem trap)将进程执行方式变为核心态,然后使内核为系统调用执行代码。四、实验内容本实验要求在 LINUX/UNIX 环境下用 C 语言编写三个具体的 SHELL命令,基本涉及了 LINUX/UNIX 文件系统中较为常用的有关文件操作的系统调用。内容如下:(1)编程实现 copy 命令,执行格式:copyfile1file2file3功能:将 file1、file2 两文件的内容合并拷入 fi
4、le3 中,其中间应有 30个字节的空洞。程 序 可 能 涉 及 到 的 系 统 调 用 : read(), write(), open(), creat(),close(), lseek()完成后,注意查看文件 file3 的大小和内容。实验代码:#include #include #include #include #include #include int main(int argc, char const *argv)int file1,file2,file3;file1=open(argv1,O_RDONLY);file2=open(argv2,O_RDONLY);file3=ope
5、n(argv3,O_CREAT|O_RDWR,S_IRWXU);int n;char buf1024;while ( n=read(file1,buf,1024)0) write(file3,buf,n);lseek(file3,30,SEEK_END);while ( n=read(file2,buf,1024)0) write(file3,buf,n);close(file1);close(file2);close(file3);printf(finishn);return 0;实验截图:(2)编程实现 renam(即 LINUX 下的 rename)命令,功能是实现文件的重命名。执行格式
6、:renamfileafileb;其中 filea 为源文件,fileb 为目标文件程 序 可 能 涉 及 到 的 系 统 调 用 : read(), write(), open(), creat(),close(), link(), unlink()实验代码:#include #include #include int main(int argc,char* argv) link(argv1,argv2); unlink(argv1);printf(finishn);return 0;实验截图:(3)编程实现:使用 symlink()创建当前目录下文件 f1 的符号链接文件 f2,在理解 s
7、tat 结构内容的基础上分别使用 stat()和 lstat()系统调用显示文件 f2 的信息(即 stat 结构的内容),比较两次输出的结果有何异同。8程 序 可 能 涉 及 到 的 系 统 调 用 : open(), close(),stat() , lstat() ,symlink()实验代码:#include #include #include #include int main(int argc,char* argv) struct stat state;/*链接*/symlink(argv1,argv2);stat(argv2, &state);printf(%s的stat大小=%
8、d字节n,argv2, (int)state.st_size);lstat(argv2, &state);printf(%s的lstat大小=%d字节n,argv2, (int)state.st_size);return 0;实验截图:五、实验心得 通过本次实验掌握有关文件管理与文件操作的内容学会了编写简单的c程序在ubuntu环境下应用学会了用c语言编写实现 copy 命令,编程实现 renam(即 LINUX 下的 rename)命令, 编程实现:使用 symlink()创建当前目录下文件 f1 的符号链接文件 f2,在理解 stat 结构内容的基础上分别使用 stat()和 lstat()系统调用显示文件 f2 的信息(即 stat 结构的内容。六、使用系统调用时的注意事项以下列出了几条系统调用和库函数有关出错处理的不同点,更多的内容还需大家通过编程积累。(1)对于 studio 库中的函数,出错时会返回一个预定义的常量 EOF 或NULL;许多库函数在出错时常常返回 0 或 1 ;有些库函数则返回某种出错代码。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届贵州省贵阳市重点中学高三化学试题模拟一含解析
- 餐厅合作经营合同
- 辽宁省营口开发区第一高级中学2026届八校联考高考化学试题模拟试卷含解析
- 2025~2026学年河北省邯郸市魏县度第一学期期末质量检测七年级英语试卷
- 2026客车营运考试题及答案
- 2026纪法考试题库及答案解析
- 2026厦门国有资本运营有限责任公司招聘备考题库附答案详解(夺分金卷)
- 2026广东佛山南海区狮山镇显纲小学招聘教师1人备考题库及答案详解(名师系列)
- 2026年福建宁德福安市公安局招聘2名工作人员备考题库附答案详解(能力提升)
- 2026年辽宁省市场监管事务服务中心赴高校公开招聘工作人员4人备考题库附答案详解(黄金题型)
- 幼儿园公众号培训课件
- 油田钻井监督岗位培训考试题全集
- 休克病人护理健康教育
- 狐狸的清白教学课件
- 村级治理课件
- 2025年拼多多客服知识考核试题及答案
- 口腔科根管治疗操作规范
- 雨课堂在线学堂《医学实验技术与方法新进展》单元考核测试答案
- 雨课堂在线学堂《现代礼仪》作业单元考核答案
- 信托业务部门绩效考核方案
- 2026年国家电网招聘之电网计算机考试题库500道及一套参考答案
评论
0/150
提交评论