Linux基础实验报告
linux的基本操作实验报告

一.实验目的1.熟练应用linux操作系统的上机操作流程2.掌握shell相关命令,vi编辑器的使用和应用命令操作文件,目录,用户和组的建立,更改以及删除等。
二.实验环境Linux操作系统,redhat6.0版本三.实验内容在linux环境下练习shell相关命令,使用vi编辑器编辑并运行c和java的小程序,应用命令操作文件,目录,用户和组的建立,更改以及删除,实现对文件和目录的复制,移动,对用户个组权限的设置等。
1.简单命令的相关应用(1)date命令:显示系统当前的日期和时间(2)pwd命令:显示当前工作的全路径名(3)who命令:显示当前已登录到该系统的所有用户,及其终端名和登陆到系统的时间(4)cal命令:显示日历cal 年份:显示该年的日历cal月份年份:显示该年当月的日历操作截图如下:(5)wc命令:统计给定文件的行数,字数和字符数(6)uname命令:查看当前系统的信息(7)clear命令:用于清屏2.shell命令的相关应用(1)shell命令的一般格式例如:[root@localhost~]#ls – la(2)在线帮助命令,格式:man 命令名(3)shell的历史命令[root@localhost~]#history |more(4)shell的重定向“>”将输出的信息直接写入,如此将覆盖前内容“>>”将输出的信息已追加的方式写入(5)管道命令“|”:将前一个命令的结果作为后一个命令的输入。
3.文件信息命令(1)cat查看文件信息以上命令部分的操作结果截图如下:(2)cp复制命令:把指定源文件(或目录)复制到目标文件或把多个源文件复制到目标目录中。
(3)mv文件移动及改名命令:该命令实现对文件或目录改名或将文件由一个目录移入到另一个目录当中(4)rm命令:删除文件与目录:该部分命令操作结果截图如下:3.目录操作命令(1)mkdir创建目录命令:用于创建一个目录格式mkdir [ 选项] [目录名]mkdir 目录1 目录2 同时创建目录1和目录2.mkdir -p目录1 /目录2 递归生成目录1和目录2,及目录1作为当前目录的子目录,而目录2作为目录1的子目录。
linux实验报告

linux实验报告实验目的:通过对Linux操作系统的实践,掌握基本的Linux命令和操作方法,了解Linux操作系统的特点和优势。
实验一:Linux环境搭建在实验一中,我们首先需要搭建Linux操作系统的环境。
根据实验指导书的要求,我们选择了Ubuntu作为实验平台。
通过下载Ubuntu镜像文件,并利用虚拟机软件创建一个虚拟机,将镜像文件安装到虚拟机中。
在安装过程中,我们需要选择合适的分区和网络配置等,并设置root用户的密码。
实验二:基本命令的使用在实验二中,我们主要学习了Linux的基本命令的使用方法。
首先,我们了解了Linux文件系统的结构,包括根目录、用户目录、系统目录等。
然后,通过命令行终端进行一系列的实践操作,比如查看文件内容、创建目录、复制文件等。
这些命令的使用不仅提高了我们的工作效率,同时也增强了对Linux操作系统的理解。
实验三:软件安装与卸载实验三主要涉及到Linux的软件安装与卸载。
我们首先学习了使用APT工具进行软件包管理,通过安装命令行界面的方式安装了一些常用的软件,比如文本编辑器、终端工具等。
此外,我们还学习了如何卸载已安装的软件包,清理不需要的文件,以保持系统的整洁性。
实验四:权限管理在实验四中,我们学习了Linux的权限管理机制。
Linux操作系统采用了基于用户和组的权限模型,通过设置文件和目录的权限,实现对文件的读、写、执行的控制。
我们通过实际操作,创建了新的用户和组,并为不同的用户和组设置了不同的权限。
这样,可以有效地保护系统的文件和数据的安全性。
实验五:网络配置与服务搭建在实验五中,我们主要学习了Linux的网络配置和服务搭建。
通过设置网络接口、IP地址和网关等参数,实现了网络的正常连接。
同时,我们还学习了一些常用的网络命令,比如ping、ssh等。
此外,我们尝试搭建了一个简单的Web服务器,通过浏览器访问,可以查看服务器上的网页。
实验六:系统监控和故障恢复在实验六中,我们学习了Linux的系统监控和故障恢复方法。
linux的实验报告

linux的实验报告Linux的实验报告引言:Linux作为一种开源操作系统,具有广泛的应用领域和强大的稳定性,已经成为计算机科学领域中不可或缺的一部分。
在本次实验中,我们将对Linux进行深入探索和实践,以了解其基本原理和功能。
一、Linux的起源与发展Linux诞生于1991年,由芬兰大学生林纳斯·托瓦兹(Linus Torvalds)开发而成。
起初,Linux只是一个小型的个人项目,但随着时间的推移,越来越多的程序员加入其中,使得Linux逐渐成为一个强大的操作系统。
二、Linux的核心特性1. 开源性:Linux的源代码对所有人开放,任何人都可以对其进行修改和改进。
这使得Linux具有强大的灵活性和可定制性。
2. 多用户和多任务:Linux支持多用户同时登录,并能够同时处理多个任务,大大提高了工作效率。
3. 稳定性和安全性:Linux具有出色的稳定性和安全性,很少出现崩溃和漏洞。
这使得Linux成为服务器和网络设备的首选操作系统。
4. 强大的命令行界面:Linux提供了强大的命令行界面,使得用户可以通过命令行操作来完成各种任务,提高了操作的灵活性和效率。
三、Linux的实验应用在本次实验中,我们通过以下几个方面对Linux进行了实践应用。
1. 安装和配置Linux操作系统首先,我们需要选择适合的Linux发行版,并进行安装和配置。
在安装过程中,我们需要选择合适的分区方案、安装软件包和设置用户账户等。
通过这一步骤,我们熟悉了Linux的安装过程和基本配置。
2. 熟悉Linux的文件系统Linux的文件系统与Windows有所不同,我们需要了解Linux的文件结构和文件路径。
在实验中,我们通过命令行界面进入不同的目录,创建和删除文件,以及修改文件权限等操作,深入了解了Linux的文件系统。
3. 学习Linux的基本命令Linux的命令行界面是其最大的特点之一,我们需要掌握一些基本的命令来完成各种任务。
linux实验报告

实验一 Linux基本操作一、实验目的了解并熟悉Linux操作系统的基本环境和基本操作。
二、实验内容(1)掌握开机、登录、退出、关机步骤;(2)学习Linux的常用命令;(3)学习vi 编辑器的使用:学习在命令终端下,编译、连接、运行一个程序的方法;(4)编制一个C语言程序,显示“hello world”,编译、连接、运行。
三、实验过程(1)开机输入用户名和密码即登录到linux系统中。
退出时可以直接点关机按钮,也可以用命令行:普通用户输入 logout 或者 exit 即注销;超级用户输入shutdown –h now即立刻关机,输入 shutdown –h 12:00即12点关机,输入shutdown –r now即立刻重启。
(2)linux常用命令:-pwd命令:显示当前的工作目录。
-ls 命令:列出指定的文件信息或指定的目录中的文件和子目录清单。
-rm命令:删除指定的文件或目录。
-cp命令:复制文件或目录。
(3)编译:对于c 文件:cc -o name xxx.c;对于c++ 文件:c++ -o name xxx.cpp (其中name是可执行文件名,xxx是编写时候的文件名)。
运行:./name四、调试程序过程命名程序:编写程序:编译程序:运行程序:五、总结1、调试过程中遇到的主要问题及解决过程命名的时候如果不加扩展名 .c或者 .cpp 执行的时候会提示错误,找不到文件。
2、体会和收获通过这次实验我初步认识了虚拟机环境下的linux系统的界面和一些基本的命令行操作;也学会了用vi编辑器编写c和c++文件;同时知道了一些常用的命令,比如查看文件、查看当前目录、复制、删除等等,觉得很有意思,引起了我学习linux的兴趣。
六、附录:源程序代码(另附)。
linux实验报告

目录实验一Linux基本操作一、实验目的1、掌握linux操作系统的登录与其他基本口令2、掌握linux操作系统的基本命令二、实验内容1、linux命令的格式2、Linux命令的输入、修改、执行、分类、联机帮助3、Linux文件操作三、实验环境安装有Fedora操作平台的计算机一台四、实验过程与结果分析一、linux基本操作由于实验中我们使用的不是root权限,所以对于一些用户建立,关机等都没有相应的权限。
1)登录1.控制台登录提供用户名与密码方可登录2.远程登录这部分由于实验环境所限为进行练习2)修改口令Password pass3)退出4)关机与重启关机:shutdown now重启:reboot二、linux命令这部分主要是练习主要的命令格式(命令格式为:命令名选项一选项二…参数一参数二… )命令的输入与修改,命令的执行等等,这些操作也都及其简单。
主要是用以下几个命令1)$who$who –q /*显示登录用户名和用户数*/$who am I /*显示当前用户和登录时间*/2)echo命令:$ echo Hello! */显示字符串中的参数字符串/*-n /*输出字符串后不换行*/3)data命令用法示例:$date …+Today is %D,now is %r‟ /*显示今天的日期,和现在的时间*/$date …%B %d,%Y‟ /*显示月日年*/4)cal /*显示当年当月的日历*/三、文件操作Linux文件通常是由字母、数字、“.”、“_”和“-”字符组成。
在对大量文件进行操作时可以使用通配符。
个人觉得文件的通配符非常的重要,使用起来及其方便,主要的通配符有以下几种:?:匹配任意单个字符* :匹配0或多个任意字符[ ]:匹配方括号中列出的字符集中的任意单个字符集例如:输出所有以.c结尾的文件$ echo *.c对文件的操作主要有创建新文件,对文件权限的操作,文件的转移等等,命令操作如下所示:1)文件的创建1.cat > newfile2.vi newfile2)文件的权限文件主要有权限有读权限、写权限、执行权限、无权限四种3) 常用文件操作的命令1.文件显示:cat 、more、less2.文件复制、删除和移动cp、rm、mv3.文件内容的统计和排序wc、sort4.改变文件的存取权限chmod5.改变文件的时间标签touch6.设置文件掩码umask7.文件查找、搜索find、grep四、目录操作目录操作是本章最重要的内容,它结合文件操作,用户必须熟练使用在各种目录下进行文件操作。
linux基本命令实验报告

linux基本命令实验报告Linux基本命令实验报告一、引言在计算机科学领域,Linux操作系统是一种常见的开源操作系统。
它以其稳定性、安全性和灵活性而闻名,并被广泛应用于服务器和个人计算机。
本实验报告旨在介绍一些常用的Linux基本命令,并通过实验来验证其功能和用法。
二、实验目的1. 熟悉Linux操作系统的基本命令;2. 掌握Linux命令的用法和参数;3. 通过实验验证Linux命令的功能。
三、实验内容1. 文件和目录操作命令1.1 ls命令:用于列出当前目录下的文件和目录。
1.2 cd命令:用于切换当前工作目录。
1.3 mkdir命令:用于创建新目录。
1.4 touch命令:用于创建新文件。
1.5 cp命令:用于复制文件或目录。
1.6 mv命令:用于移动文件或目录。
1.7 rm命令:用于删除文件或目录。
2. 文本处理命令2.1 cat命令:用于查看文件内容。
2.2 grep命令:用于在文件中搜索指定的字符串。
2.3 sed命令:用于对文件进行文本替换和编辑操作。
2.4 awk命令:用于处理和分析文本数据。
3. 系统管理命令3.1 ps命令:用于查看当前系统进程。
3.2 top命令:用于实时监控系统资源占用情况。
3.3 kill命令:用于终止指定的进程。
3.4 ifconfig命令:用于查看和配置网络接口。
3.5 ping命令:用于测试网络连接。
四、实验结果与分析1. 文件和目录操作命令实验结果:通过实验,我们成功地使用了ls命令列出了当前目录下的文件和目录,并使用cd命令切换了工作目录。
我们还创建了新目录和新文件,并使用cp命令和mv 命令进行了文件和目录的复制和移动。
最后,我们使用rm命令成功地删除了文件和目录。
2. 文本处理命令实验结果:我们使用cat命令查看了文件的内容,并使用grep命令在文件中搜索了指定的字符串。
我们还使用sed命令对文件进行了文本替换和编辑操作,并使用awk 命令对文本数据进行了处理和分析。
linux 基本操作 实验报告

linux 基本操作实验报告《Linux基本操作实验报告》Linux操作系统是一款开源的操作系统,具有稳定性高、安全性强等特点,因此在服务器领域得到了广泛的应用。
对于初学者来说,熟悉Linux的基本操作是非常重要的,下面我将分享一份Linux基本操作的实验报告。
实验一:登录和退出Linux系统首先,我们需要了解如何登录和退出Linux系统。
在登录界面输入用户名和密码后,我们就可以进入系统。
在系统中,我们可以使用命令“exit”来退出系统。
实验二:文件和目录操作在Linux系统中,文件和目录的操作是非常重要的。
我们可以使用命令“ls”来查看当前目录下的文件和目录,使用命令“cd”来切换目录,使用命令“mkdir”来创建新的目录,使用命令“rm”来删除文件或目录。
实验三:文件编辑在Linux系统中,我们可以使用命令行工具来编辑文件。
比较常用的编辑器有vi和nano。
我们可以使用命令“vi”或“nano”来打开文件进行编辑,然后保存并退出。
实验四:用户和权限管理Linux系统中的用户和权限管理也是非常重要的。
我们可以使用命令“useradd”来添加新用户,使用命令“passwd”来修改用户密码,使用命令“chmod”来修改文件或目录的权限。
实验五:系统管理最后,我们还可以使用一些命令来管理系统。
比如使用命令“ps”来查看当前系统进程,使用命令“top”来查看系统资源占用情况,使用命令“shutdown”来关闭系统。
通过以上实验,我们可以初步了解Linux系统的基本操作。
当然,Linux系统还有很多其他的功能和命令,需要我们不断学习和实践。
希望大家能够通过实践不断提升自己的Linux操作技能,为今后的工作和学习打下坚实的基础。
linux实验报告总结-共10篇

∣inux实验报告总结(共10篇)(Linux实验报告汇总)(一)Shell 编程一、实验目的:1)掌握在Linux下的C编程基本方法。
2)掌握shell编程方法。
3)掌握dialog图形化编程方法。
二、实验内容1、编写能输出“Hello world!”问候语的C程序,并在终端中编译、执行。
要求记录所使用的命令及结果。
#include stdio.hmain()(printf(Hello world!\n);)2、编写一个C程序并设置其在后台执行,其功能是在一段时间后(可自行设置),在屏幕上显示信息:Time for play!,写出相应的程序、命令及结果。
#include stdio.hmain()(int time=0;printf(请输入等待时间(单位:s):);scanf(%d/&time);sleep(time);printf(Time for play!\n);)3、编写C程序,求1到100之间整数的阶乘和,并对程序进行优化。
写出程序、命令和结果。
#include stdio.hmain()int i;double s = l,sum = 0;for( i= l;i= 100;i++)sum+=s*=i;printf( 1到100之间整数的阶乘和:%f\n,sum);printf( 1到100之间整数的阶乘和:%e\n,sum);}4、编写C程序,根据键盘输入的半径求圆面积,要求在命令行周率(P∣=3∙14,PI=3∙14159,PI=3.14159626 等)进行编使用不同的译,写出程序、命令和结果。
#include stdio.hint main()double r = 0.0 , Area = 0.0;printf(请输入半径:);scanf(%lf, &r);Area = PI * r * r;printf(圆面积:%f∖n, Area);)5、编写shell程序sh.l,完成向用户输出“你好!”的问候语。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学LINUX课程实验报告实验名称:专业班级:学号:姓名:实验一LINUX基本操作任务一:Linux 系统安装下图为安装成功,启动时后的登陆界面该系统我装在虚拟机上,为了掌握操作要领,在第一次摸索着安装之后,我又卸载安装了两次。
第一次在是否检测光盘时出现ok和skip选择时,选择了ok,之后就进行不下去了。
重新试了好几次,最终选择skip,然后就能继续下去了。
后来,在一个镜像文件安装完成之后,第二个镜像文件无法插入,就在setting 里面一阵折腾,最终发现在CD/DVD设置中的Device status下的connected 和connect at power on 都要打钩选择,然后接下来镜像文件就能安装了。
之后一直没有出现大问题。
第二次重装的时候,又把这里忘记了,折腾了半天才恍然大悟。
第三次装的时候,一切顺利。
过程中忘记截图了。
项目二:linux 桌面环境介绍一:以用户的身份登录:以管理员的身份登录:想要更改的桌面背景,确定。
更改后,如下图所示:项目三:vi编辑器的使用Vi的三种模式是命令模式,插入模式,可视模式删除5~10行后:将光标移到第五行,键入5dd,删除五行。
如下图将10~20行复制到末尾将光标移到第十行首,键入10yy,复制10~20行,再将光标移到末尾,键入p,粘贴。
如下图将所有的sbin改为bin。
键入g/sbin/s//bin/p,确定即可项目四:用户和组管理下图为操作及修改过程:项目五文件与目录管理任务一:在/home下创建一个test文档,不知道用什么命令做,后来查了,才知道。
所以输入了好几条错命令......查看/etc/passed 的文件类型在/home下建立一个名为newfile的文件用man cat 查看cat命令使用帮助查看/etc/passwd文件的前五行和后五行用cat查看/etc/passed 文件,查看结果:用more 查看/etc/passwd文件,查看结果:用less查看/etc/passwd的结果:用head 和tail 查看/etc/passed的结果:任务三:任务四:项目六权限管理实验1 Linux基本操作1、实验目的(1)复习Linux基本命令。
(2)掌握常用Linux命令2、实验内容(1)练习命令行模式下的常用命令:man:命令帮助ALT-Fx:虚终端切换常用命令:cat、Ls、ps、chmod、kill、ln、cp、mv、rm、cd、pwd、mkdir、chown、who、w、wc、whoami、date、uname等(2) 编辑器vi的使用:使用vi建立并修改一个文本文件root@localhost-desktop:~# vi testVi的三种模式是命令模式,插入模式,可视模式删除5~10行后:将光标移到第五行,键入5dd,删除五行。
如下图将10~20行复制到末尾将光标移到第十行首,键入10yy,复制10~20行,再将光标移到末尾,键入p,粘贴。
如下图键入g/sbin/s//bin/p,确定即可(3) 档案管理rpm、gzip、tar等命令Tar:将整个/etc 目录下的文件全部打包成为/tmp/etc.tar[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩![root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以gzip 压缩[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以bzip2 压缩查阅上述/tmp/etc.tar.gz 文件内有哪些文件[root@linux ~]# tar -ztvf /tmp/etc.tar.gzGzip:将/etc/man.config 複制到/tmp ,并且以gzip 压缩[root@linux ~]# cd /tmp[root@linux tmp]# cp /etc/man.config .[root@linux tmp]# gzip man.config[root@linux tmp]# zcat man.config.gz(4) 网络命令telnet、ftp、talk心得体会:Shell命令是在终端输入命令来进行一些基本操作。
通过这次实验,我加深了对shell命令的了解和运用。
实验过程中,一个参数不对,命令就无法执行,这就要求我们对shell命令很熟悉地掌握,并且还要很认真细心。
通过这次实验,我收获很大,对以后的学习有很大帮助。
实验二:GCC/GNU与Makefile编写一个简单的c语言程序,在Linux下编辑、编译、运行。
用gdb调试器调试上面第2题的程序,查看程序执行每一步变量的值,熟悉gdb 的使用流程。
编写makefile文件编写hello.c文件编写print.c文件编写Makefile文件用gcc编译用gdb调试以及运行结果实验三:Linux文件系统1、在掌握Linux操作系统基本概念的基础上,本实验将通过proc文件系统观察整个系统的一些重要特征,并要求编写一个C程序,利用proc 文件系统获得和修改系统的各种配置参数。
具体要求如下:(1)以超级用户的身份登录Linux系统,并进入/proc目录,查看该目录下内容以及每个文件的读写权限,回答下列问题:CPU的类型和型号所使用的Linux版本从启动到当前时刻经过的时间当前内存状态#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <dirent.h>//A:编写程序在stdout上显示/proc中文件(CPU的类型和型号,所使用的Linux 内核版本,从系统最后一次启动以来已经经历了多长时间)void func_A(){int i,t,d,h,m,s;char c[512];FILE * in1,* in2,* in3;in1=fopen("/proc/cpuinfo","r");//打开acpuinfo文件in2=fopen("/proc/version","r");//打开version文件in3=fopen("/proc/uptime","r");//打开auptime文件//获取需要显示的信息for(i=0;i<5;i++)fgets(c,512,in1);printf("CPU型号: %s",c+13);fgets(c,512,in2);printf("内核版本: %s",c);//转换时间显示形式d=h=m=s=0;fscanf(in3,"%d",&t);d=t/86400;t=t%86400;h=t/3600;t=t%3600;m=t/60;t=t%60;s=t;printf("系统最后一次启动以来的时间: %02d:%02d:%02d:%02d\n",d,h,m,s);fclose(in1);fclose(in2);fclose(in3);}//C:改写A程序,在stdout上显示计算机配置的内存数量、当前可用的内存数量、平均负载列表(至上一分钟的平均数);void func_C(){FILE *in1,*in2; //定义2个文件指针char c[512],d[32]; //存放信息的数组int t,iteration=0;float m;in1=fopen("/proc/meminfo","r");//打开meminfo文件while(fgets(c,512,in1)!=NULL){sscanf(c,"%s %d",&d,&t);if(strcmp(d,"MemTotal:")==0)////定位到计算机配置的内存数量printf("计算机配置的内存数量:%d\n",t);if(strcmp(d,"MemFree:")==0)//定位到当前可用的内存数量printf("当前可用的内存数量:%d\n",t);}printf("平均负载列表至上一分钟的平均数:\n");while(iteration<duration){in2=fopen("/proc/loadavg","r");//打开loadavg文件sleep(internal);fgets(c,512,in2);rewind(in2);sscanf(c,"%f",&m);printf("%f\n",m);fclose(in2);iteration+=internal;}fclose(in1);//关闭文件}//主函数:int internal;int duration;void main(int argc, char *argv[]){char c1,c2;if(argc==1){func_A();return;}if(argc>1){sscanf(argv[1],"%c%c",&c1,&c2);if(c1!='-'){printf("usage: observer [-s] [-l int dur]\n");return;}if(c2=='s'){func_B();return;}if(c2=='l'){internal=atoi(argv[2]);//将string对象转化成int对象duration=atoi(argv[3]);func_C();return;}}}2、编写一个C程序,完成将两个文件合并生成一个新的文件。
#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <dirent.h>char *newfile= "new.txt "; //合并后的新文件//is directoryint testdir(char *path){struct stat buf;if(lstat(path,&buf) <0){return 0;}if(S_ISDIR(buf.st_mode)){return 1; //directory}return 0;}int appendfile(char *to,char *from){unsigned int CMAXLEN = 1024, nbytes;FILE *ffp, *tfp;char buf[CMAXLEN];if((ffp = fopen(from, "rb ")) == NULL) {return -1;}if((tfp = fopen(to, "ab ")) == NULL) {fclose(ffp);return -1;}while(!feof(ffp) && !ferror(ffp)){nbytes = fread(buf, 1, CMAXLEN, ffp); if(fwrite(buf, 1U, nbytes, tfp) != nbytes) {fclose(ffp);fclose(tfp);return -1;}if(nbytes < CMAXLEN)break;}fclose(tfp);fclose(ffp);return 0;}long __countline(char *filename){char buf[1024*1024];FILE *file;long count=0;file=fopen(filename, "r ");if(!file)return -1;while(!feof(file)){fgets(buf,1024*1024,file);count++;}count--;fclose(file);return count;}int directory(char *path){int count=0;DIR *db;char filename[128];struct dirent *p;db=opendir(path);if(db==NULL)return 0;memset(filename,0,128);while ((p=readdir(db))){if((strcmp(p-> d_name, ". ")==0)||(strcmp(p-> d_name, ".. ")==0))continue;else{sprintf(filename, "%s/%s ",path,p-> d_name);//È¡¶þ¼¶Ä¿Â¼Â·¾¶if(testdir(filename))continue;else {appendfile(newfile,filename);printf( "%s %ld行\n ",filename,countline(filename));}}memset(filename,0,64);}closedir(db);return count;}int main(int argc,char **argv){char *path[]={ "test1 ", "path2 ", "path3 ", "path4 ", "path5 "};int i;for( i=0;i <5;i++){if(access(path[i],F_OK)==0&&testdir(path[i])){printf( "is directory\n ");directory(path[i]);}else printf( "%s not exist\n ",path[i]);}}实验四:进程通信1、实验内容1.编写一个多进程通信程序,采用Message Queue或shared Memory或者Pipe File机制进行通信2、实验要求(1)写出源程序,并编译运行(2)详细记录程序调试及运行结果源代码:#include <stdio.h>#include <pthread.h>#define BUFFER_SIZE 16struct prodcons{// 缓冲区相关数据结构int buffer[BUFFER_SIZE];pthread_mutex_t lock;int readpos, writepos;pthread_cond_t notempty;pthread_cond_t notfull;};void init(struct prodcons *b){pthread_mutex_init(&b->lock, NULL);pthread_cond_init(&b->notempty, NULL);pthread_cond_init(&b->notfull, NULL);b->readpos = 0;b->writepos = 0;}void put(struct prodcons *b, int data){pthread_mutex_lock(&b->lock);if ((b->writepos + 1) % BUFFER_SIZE == b->readpos){pthread_cond_wait(&b->notfull, &b->lock); }b->buffer[b->writepos] = data;b->writepos++;if (b->writepos > = BUFFER_SIZE)b->writepos = 0;pthread_cond_signal(&b->notempty); pthread_mutex_unlock(&b->lock);}int get(struct prodcons *b){int data;pthread_mutex_lock(&b->lock);if (b->writepos == b->readpos){pthread_cond_wait(&b->notempty, &b->lock); }data = b->buffer[b->readpos];b->readpos++;if (b->readpos > = BUFFER_SIZE)b->readpos = 0;pthread_cond_signal(&b->notfull);pthread_mutex_unlock(&b->lock);return data;}#define OVER ( - 1)struct prodcons buffer;void *producer(void *data){int n;for (n = 0; n < 10000; n++){printf("%d --->\n", n);put(&buffer, n);} put(&buffer, OVER);return NULL;}void *consumer(void *data){int d;while (1){d = get(&buffer);if (d == OVER)break;printf("--->%d \n", d);}return NULL;}int main(void){pthread_t th_a, th_b;void *retval;init(&buffer);pthread_create(&th_a, NULL, producer, 0);pthread_create(&th_b, NULL, consumer, 0);pthread_join(th_a, &retval);pthread_join(th_b, &retval);return 0;}实验总结:为了能够完成Linux 课程的四次实验,我不断在自己的电脑上的虚拟机里尝试安装各种版本的Linux系统,因为电脑本身的原因,我重新装了好多次,终于顺利完成实验。