操作系统实验四陈珂

上传人:鲁** 文档编号:497209494 上传时间:2023-02-15 格式:DOC 页数:16 大小:1,017.50KB
返回 下载 相关 举报
操作系统实验四陈珂_第1页
第1页 / 共16页
操作系统实验四陈珂_第2页
第2页 / 共16页
操作系统实验四陈珂_第3页
第3页 / 共16页
操作系统实验四陈珂_第4页
第4页 / 共16页
操作系统实验四陈珂_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《操作系统实验四陈珂》由会员分享,可在线阅读,更多相关《操作系统实验四陈珂(16页珍藏版)》请在金锄头文库上搜索。

1、word操作系统原理实验报告专 业 网络工程 班 级 14-2 学 号姓 名林浩强指导教师陈 珂 完成时间成 绩实验四 LINUX文件系统编程一、实验目的l1加深对文件,目录,文件系统等概念的理解。2掌握Linux文件系统的目录结构。3掌握有关Linux文件系统操作的常用命令。4了解有关文件安全方面的知识。5掌握LINUX文件系统的根本原理,结构和实现的方法6掌握LINUX文件系统中文件的建立,打开,读写,执行,属性等系统调用的使用.二、实验内容1浏览文件系统2查看文件3文件操作4文件存取权限5仔细阅读提供的源代码6理解LINUX文件系统的根本原理7调试提供的源代码三、实验步骤一、Linux常

2、用文件命令1、浏览文件系统1.1运行pwd命令,确定你当前的工作目录。1.2利用以下命令显示当前工作目录的内容:ls l1.3运行以下命令:ls ai1.4使用mkdir命令建立一个子目录subdir。1.5使用带-d选项的ls命令,你只能看到有关子目录的信息。1.6使用cd命令,将工作目录改到根目录/上。命令格式:cd /1.7使用ls命令列出根目录的内容,再分别列出各子目录的内容。1.8使用ls -l命令列出/dev的内容1.9使用不带参数的命令cd,然后用pwd命令确定你当前的工作目录是什么。1.10使用命令cd . /.,你将工作目录移到什么地方。注意“/前有无空格的区别。2、查看文件

3、2.1利用cd命令,将工作目录改到你的主目录上。2.2将工作目录改到你的子目录subdir,然后运行命令:date file1将当前日期和时间存放到新建文件file1中。2.3使用cat命令查看file1文件的内容。2.6利用cat命令显示文件file1的内容。2.7利用ls -l file1命令列出文件file1的较详细的信息,注意其中第二字段计数的值。2.8利用ln file1./fa命令进展文件。然后运行ls -l file1,查看显示的第二段的值发生了什么变化。2.9现在想利用cat fa命令显示文件fa的内容,应该如何改动工作目录?2.10假设你的主目录是/usr/student,利

4、用ln -s /usr/student/file1 slink进展符号连接。然后,利用ls -l file1 slink显示有关file1和slink的信息。2.11运行ls -l/bin命令显示目录的内容。2.12利用ls -l/bin|more命令行分屏显示/bin目录的内容。3、文件操作4、文件与目录存取权限4.1 文件读权限r:允许指定的用户可以打开文件并阅读其内容。如cat,more,file和cp命令等。4.2文件写权限w:允许指定的用户可以打开文件并修改其内容。如vi,mail,cp等。4.3文件执行权限x:允许指定的用户运行即执行一个二进制文件或者把一个shell脚本文件当作命

5、令来运行。当你通过输入命令名来调用命令时,你必须具有该命令文件的执行权限。4.4目录读权限r:允许你列出相应目录中所存放的文件的名字即目录的内容表。4.5目录写权限w:允许你从目录中删除已有文件或者把新文件添加到目录中。4.6目录查询权限x:允许你在目录中进展查找和使用cd命令把工作目录放到它这里。二、LINUX文件系统编程1.1、在VMware运行Linux(CentOS),并打开Terminal1.2、新建eaxm.c文件,并使用C语言进展编程1.3、编译文件“1.4、执行“并观察输出结果四、程序清单:注意加注释包含关键字、方法、变量等,在每个模块前加注释#include#include#

6、include#include#include#include#include#include#define MAX 128int chmd();int chmd ()int c;mode_t mode=S_IWUSR;printf( 0. 0700n 1. 0400n 2. 0200 n 3. 0100n ); printf(Please input your choice(0-3):);scanf(%d,&c);switch(c)case 0: chmod(file1,S_IRWXU);break;case 1: chmod(file1,S_IRUSR);break;case 2: chm

7、od(file1,S_IWUSR);break;case 3: chmod(file1,S_IXUSR);break;default:printf(You have a wrong choice!n);return(0);main()int fd;int num; int choice;char bufferMAX;struct stat buf;char* path=/bin/ls;char* argv4=ls,-l,file1,NULL; while(1) printf(*n);printf(0. 退出n);printf(1. 创建新文件n);printf(2. 写文件n);printf(

8、3. 读文件n);printf(4. 修改文件权限n);printf(5. 查看当前文件的权限修改文件权限n);printf(*n); printf(Please input your choice(0-6):); scanf(%d,&choice); switch(choice) case 0:close(fd); exit(0); case 1: fd=open(file1,O_RDWR|O_TRUNC|O_CREAT,0750); if(fd=-1) printf(File Create Failed!n); else printf(fd = %dn,fd); break; case 2

9、: num=read(0,buffer,MAX); write(fd,buffer,num); break; case 3: read(fd,buffer,MAX); write(1,buffer,num); break; case 4: chmd (); printf(Change mode success!n); break; case 5:execv(path,argv); break; default: printf(You have a wrong choice!n); 五、测试结果运行结果、结果分析六、回答如下问题:1、程序分析本程序主要是通过调用系统中“文件的建立、打开、读写、执

10、行等系统调用函数,实现对Linux文件的各种操作,例如创建、读写、修改文件权限等操作。主要使用到以下几个系统调用函数:1创建新文件 fd=open(file1,O_RDWR|O_TRUNC|O_CREAT,0750);调用函数open()打开文件,第一个参数为要打开的文件名,第二个参数为打开文件的方式,其中参数O_CREAT表示当打开的文件不存在时,创建该文件,此时要加上第三个参数,第三个参数表创建文件后文件所具有的权限。该函数的返回值为打开文件的标识符,出错时fd=-1; 2写文件 num=read(0,buffer,MAX);调用read()函数,该函数的第一个参数为要读取的文件描述符,0

11、表示从输入流中读取文件,第二个参数表示将读取到的数据存放到buffer缓冲区中,第三个参数为最大读取的字符个数。函数的返回值为实际读取到的字符数。 write(fd,buffer,num);调用write()函数,该函数的第一个参数为要将数据写入的文件描述符,第二个参数要写入的缓冲区,第三个参数为写入的字符长度。3读文件 read(fd,buffer,MAX);调用该函数,将文件标识符为fd中的文件中的数据读取到buffer缓冲中。 write(1,buffer,num); 调用该函数,将buffer缓冲区中的数据写入到输出流中,输出到显示器上。 4修改文件权限 chmod(file1,S_I

12、RWXU); 调用该函数更改文件的权限,其中第一个参数为要更改权限的文件名,第二个参数为要修改到的权限,其中,S_IRWXU表示具有执行、可读、可写权限,S_IRUSR表示具有可读权限,S_IWUSR表示具有可写权限,S_IXUSR表示具有可执行权限。5查看当前文件的权限修改文件权限 char* path=/bin/ls; char* argv4=ls,-l,file1,NULL; execv(path,argv); 调用系统调用execv()函数,表示调用/bin/ls ,实际相当于在终端上执行 ls l file1,查看文件file1的详细信息。2、解释num=read(0,buffer,MAX); write(fd,buffer,num);代码的含义?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号