实验三:文件操作命令 一、实验目的
熟悉和理解文件的概念和文件系统的类型,了解linux系统中文件系统的管理机制,掌握文件系统的装载方法,掌握linux操作系统中文件的基本操作方法。 二、实验环境及工具
装有linux系统的计算机,光盘、优盘各一个。 三、实验内容和要求
1、安装linux操作系统,在linux 操作系统环境下建立一个用户帐户号,为每个用户建立两个文件:test1;test2 .
2、以自己的用户名登录linux操作系统后完成下面的操作: (1) 文件操作 *查看文件与目录 ls ls -l ls /usr/bin dir
*显示文件test1内容(cat、less)
一页一页地显示文件的内容:cat test | more
列出当前目录下的文件,确定包括两个文件test1 、test2,通过下列命令,观察结果,归纳cat命令的功能: cat test1
cat test1 test2>test3 cat test3 | more *文件复制命令(CP)
使用CP命令可将指定的文件复制到指定目录下,并保持文件名不变。 cp /root/* /temp cp test1 text1 cp – r /root / * /temp cp /root / .[a-z] * /temp *删除文件命令(rm)
*移动文件和重新命名文件命令(mv) (2)目录操作命令 *改变当前命令(pew) *建立子目录命令(mkdir) *删除子目录(rmdir) (3)文件系统装卸操作 *CDROM的安装与卸载
使用mount命令把CDROM中的所有目录和文件加入到linux 目录树。挂装CDROM的命令需要以 root身份执行: mkdir / mnt / cdrom
mount –t auto /dev/cdrom /mnt/cdrom
要卸载一个已经安装上的CD-ROM需要退出 /mnt/cdrom目录并以root身份输入如下命令:umount /mnt/cdrom
*优盘的安装与卸载
在计算机的USB口中插入优盘,然后使用如下方法安装与卸载优盘:
5
mkdir /mnt/usb
mount /dev/sda /mnt/usb或mount /dev/sda1 /mnt/usb
使用完优盘后,使用umount /mnt/usb命令卸载优盘,最后才能拔出优盘。 五、实验结果
认真写出实验结果、小结、体会。 六、思考问题
1、用户建立的一个子目录应该具有什么样的权限?
2、如果将子目录X的权限修改成文件主、同组用户和其他用户都具有读写和执行的权限,该用什么样的命令完成?此时文件主是否能删除自己所建立的子目录X?
6
实验四:文件系统实验---系统调用
一、实验目的
1、 掌握文件系统的分层结构中包括哪些层,各层主要解决哪些问题。 2、 掌握文件系统的存储结构包括哪几部分内容,主要由哪些数据结构构成。 3、 文件系统中的动态数据结构的主要作用是什么。 4、 文件的多重索引结构是如何构成的,有哪些特点。 5、 linux的文件索引节点和目录文件的主要作用是什么。
6、 能使用文件管理中的系统调用,编写一些C语言程序解决简单的实际问题。 二、实验内容和要求
1、 编写一段C语言程序使其完成:对用户输入的文件名的内容进行拷贝。 例如:% EXE aFile bFile 则将文件aFile 的内容拷贝到文件bFile中。
2、 编写一段C语言程序使其完成:创建一个新文件,输入一段数据,然后随机移动指针,接着插入一段
数据。完成后,查看文件大小和内容。 三、参考代码 1、#include
if (argc<3){printf(“Usage:mycopy sourceFilename destinationFilename\\n”);exit(1);} if(fd1=open(argv[1],0)<0){printf(“open error .\\n”);exit(1);} if(fd2=creat(argv[2],0644)<0){printf(“create error .\\n”);exit(1);} while((n=read(fd1,buf,512))>0)write(fd2,buf,n); close(fd1);close(fd2); }
2、#include
char buf1[ ]=”abcde”;char buf2=”12345”; main( ) {int fid;
if((fid=creat(“test”,0664))<0){printf(“creat file error\\n”);exit(0);} else {if(write(fid,buf1,5)!=5){printf(“buf1 write error.\\n”);exit(1);}
if(lseek(fid,30,SEEK_SET)==-1){printf(“lessk error.\\n”);exit(2);} if(write(fid,buf2,5)!=5){priintf(“buf2 write error.\\\\n”);exit(3);} close(fid); } exit(0);
}
四、实验结果
请同学们写出程序执行结果和小结、体会。 五、 思考问题
1、 在linux的文件系统中包含几种大的分类?请简述这些分类的含义。
2、 linux的目录文件中主要包含哪些信息项?将I/O设备作为文件统一处理,在系统管理中有哪些优
势?
3、 linux的文件系统是由哪几部分构成?请描述这些组成部分中包括的主要内容。
7
实验五:进程管理----进程创建 一、 实验目的
1、加深对进程概念的理解,明确进程和程序的区别;
2、进一步认识并发执行的实质;分析进程争用资源的现象,学习解决进程互斥的方法; 3、了解linux 系统中进程通信的基本原理。 二 实验准备
1、装有linux系统的计算机
2、阅读 linux的ched.h原代码文件,加深对进程管理概念的理解;阅读linux的fork.c原代码文件,分析对进程的创建过程。 三、实验内容和要求
1、编写一段C语言程序使其完成:父进程创建一个子进程,子进程运行中显示当前系统的记录时钟;父进程运行时完成将1—100循环显示到标准输出流上,同时注意程序运行时控制其执行顺序是,子程序先运行,父进程再运行。 四、参考代码 1、#include
if(pid<0){printf(―Fail when creating new process!\\n‖); exit(1);}
else if(pid==0)print_systime( ); else {wait(NULL);
for(iIndex=1; iIndex<=100; iIndex++) printf(―%d‖, iIndex); printf(―\\n‖); } }
void print_systime(void) {time_t t;
if(time(&t)==((time_t)-1))
{printf(―Error when getting time!\\n‖);exit(1);} else {char *pszTime; pszTime=ctime(&t);
printf(―Now is %s\\n‖, pszTime); } }
五.实验结果 1.写出运行结果
2.按要求认真书写实验报告
8
实验六:进程管理----进程间通信(一) 一、 实验目的
linux系统的进程通信机构(IPC)允许在任意进程间大批量地交换数据。本实验的目的是了解和熟悉linux支持的消息通信机制及共享存储区机制。 二 实验准备
1、装有linux系统的计算机
2、阅读 linux系统的msg.c 、sem.c和 shm.c等原代码文件,熟悉linux的三种通信机制。 三、实验内容和要求
1、编写一段C语言程序使其完成:父子进程通过无名管道传递三条消息: *管道文件的测试程序开始。 *管道文件测试正在进行。 *管道文件测试结束。
接收进程收到信息后将它们送到标准输出文件上。
2、用 pipe( )创建一个管道文件,然后用fork( )创建两个生产进程和两个消费进程,它们之间通过pipe( )传递信息。 四、部分参考代码 1、#include
char message[3][BUFFSIZ]={―Start the test of pipe file‖,‖Test is going‖, ―Test ends‖}; if(pipe(f_des)==-1){printf(―pipe‖);exit(2);} switch(fork( ))
{case -1:printf(―Fork‖);exit(3); case 0:close(f_des[1]); for(i=0;i<3;i++)
{if(read(f_des[0],message[i],BUFSIZ)!=-1)
printf(―message received by child:[%s]\\n‖,message[i]); fflush(stdout);}
else {printf(―Read Failed‖);exit(4);} } break; default; close(f_des[0]); for(i=0;i<3;i++)
{if(write(f_des[1],message[i],BUFSIZ)!=-1)
{ printf(―message sent by parent:[%s]\\n‖,message[i]); fflush(stdout);}
else {printf(―write Failed‖);exit(5);} } }
9