Linu操作系统实验实验报告
- 格式:doc
- 大小:455.00 KB
- 文档页数:5
linux实验报告实验目的:通过对Linux操作系统的实践,掌握基本的Linux命令和操作方法,了解Linux操作系统的特点和优势。
实验一:Linux环境搭建在实验一中,我们首先需要搭建Linux操作系统的环境。
根据实验指导书的要求,我们选择了Ubuntu作为实验平台。
通过下载Ubuntu镜像文件,并利用虚拟机软件创建一个虚拟机,将镜像文件安装到虚拟机中。
在安装过程中,我们需要选择合适的分区和网络配置等,并设置root用户的密码。
实验二:基本命令的使用在实验二中,我们主要学习了Linux的基本命令的使用方法。
首先,我们了解了Linux文件系统的结构,包括根目录、用户目录、系统目录等。
然后,通过命令行终端进行一系列的实践操作,比如查看文件内容、创建目录、复制文件等。
这些命令的使用不仅提高了我们的工作效率,同时也增强了对Linux操作系统的理解。
实验三:软件安装与卸载实验三主要涉及到Linux的软件安装与卸载。
我们首先学习了使用APT工具进行软件包管理,通过安装命令行界面的方式安装了一些常用的软件,比如文本编辑器、终端工具等。
此外,我们还学习了如何卸载已安装的软件包,清理不需要的文件,以保持系统的整洁性。
实验四:权限管理在实验四中,我们学习了Linux的权限管理机制。
Linux操作系统采用了基于用户和组的权限模型,通过设置文件和目录的权限,实现对文件的读、写、执行的控制。
我们通过实际操作,创建了新的用户和组,并为不同的用户和组设置了不同的权限。
这样,可以有效地保护系统的文件和数据的安全性。
实验五:网络配置与服务搭建在实验五中,我们主要学习了Linux的网络配置和服务搭建。
通过设置网络接口、IP地址和网关等参数,实现了网络的正常连接。
同时,我们还学习了一些常用的网络命令,比如ping、ssh等。
此外,我们尝试搭建了一个简单的Web服务器,通过浏览器访问,可以查看服务器上的网页。
实验六:系统监控和故障恢复在实验六中,我们学习了Linux的系统监控和故障恢复方法。
实验1:安装Linux系统【实验目的和要求】:安装Linux系统,掌握操作系统的系统配置,建立应用环境的过程。
【实验内容】:1、首先在windows系统中安装虚拟机。
在网上找到VMwareWorksttionPro版本,确定安装目录。
一直下一步,不需要太多的说明。
2、图为安装完成后的界面。
3、然后在阿里巴巴开源镜像网站下载centos系统镜像,然后虚拟机创建新的虚拟机,进行一些简单的虚拟机设置,设置了网络链接nat模式等等。
安装完成后的界面实验2:Linux下c语言开发【实验目的】:学会和掌握用c语言开发一个应用程序的全过程,包括,编译,调试等等。
【实验步骤】:首先在系统中查看是否已经安装有gcc,输入查看命令发现没有,于是需要安装gcc。
在centos系统中可以使用比较简便的yum命令。
在之前已经配置好了yum源。
直接输入yuminstallgcc。
回车自动安装程序和需要的依赖包。
因为虚拟机中和电脑很多地方切换使用不方便,所以安装了xshell软件。
图为xshell中的截图。
安装完毕。
然后使用vi或者vim编写hello.c运行,在屏幕上打印出hello,world。
实验3:进程创建【实验目的和要求】1.了解进程的概念及意义;2.了解子进程和父进程3.掌握创建进程的方法。
【实验内容】1.子进程和父进程的创建;2.编写附件中的程序实例【实验步骤】一1、打开终端,输入命令gedit1_fork.c,在1_fork.c文件中输入1_fork.bmp中的代码;2、输入命令gcc1_fork.c-o1_fork,回车后显示无错误;3、输入命令:./1_fork运行程序。
二、1、打开终端,输入命令gedit2_vfork.c,在2_vfork.c文件中输入2_vfork.bmp中的代码;2、输入命令gcc2_vfork.c-o2_vfork,回车后显示无错误:3、输入命令:./2_vfork运行程序。
从上面可以看到两次的运行结果不一样。
linux常用命令实验实验报告-回复Linux常用命令实验实验报告一、引言在计算机领域,掌握常用命令是非常重要的。
对于使用Linux操作系统的用户来说,熟悉常用命令更是必备的技能之一。
本篇实验报告将以"Linux常用命令"为主题,介绍并实验一些常用的Linux命令,包括文件与目录管理、权限管理、网络管理、进程管理等方面的命令。
通过本次实验,希望进一步巩固和提升大家对Linux操作系统的理解和实践能力。
二、实验一:文件与目录管理1. 文件列表命令:ls首先,我们来介绍一下`ls`命令,该命令用于列出当前目录下的所有文件和文件夹。
通过在终端中输入`ls`命令,可以查看当前目录下的文件列表。
2. 创建目录命令:mkdir接下来,我们将尝试使用`mkdir`命令创建一个新的目录。
可以输入`mkdir directory_name`来创建一个名为"directory_name"的目录。
3. 切换目录命令:cd使用`cd`命令可以切换当前工作目录。
例如,要进入某个目录,可以使用`cd directory_name`命令。
要返回上一级目录,可以使用`cd ..`。
4. 复制文件命令:cp`cp`命令用于复制文件和目录。
要复制一个文件,可以使用`cp source_file destination_file`命令。
例如,`cp file1.txt file2.txt`将会复制"file1.txt"并将其命名为"file2.txt"。
5. 删除文件命令:rm要删除一个文件,可以使用`rm file_name`命令。
例如,要删除"file.txt"文件,可以输入`rm file.txt`。
6. 查找文件命令:find使用`find`命令可以在文件系统中查找文件。
例如,`find / -namefile_name`将会在根目录下找到名为"file_name"的文件。
《操作系统原理》实验报告
实验序号:2 实验项目名称:Linux操作系统命令接口
挑战3:历史命令
挑战4:数据提取
四、实验结果与数据处理
1.查看用户
2.检查权限
3.创建文件
4.创建目录
5.复制文件
6.删除文件
7.预声明变量
8.变量赋值
9.查看变量
10.查找文件
11.打包文件
12.解压文件
13.检查磁盘
14.查看ls命令的帮助信息
15.进入文件添加任务
16.顺序执行多条命令
17.打印全部文件
18.使用管道一行一行查看
19.打印某个字段的某一行
20.默认字典排序
21.删除"hello shiyanlou" 中所有的'o','l','h'
22.将"hello" 中的ll,去重为一个l
23.将输入文本,全部转换为大写或小写输出
24.数据流重定向
25.进程 = 可执行程序 + 该进程对应的内核数据结构
26.linux操作系统基本概念:操作系统按用户数量可以分为单用户系统和多用户系统。
比如Windows就是典型的单用户系统,Linux就是典型的多用户系统。
多用户系统就是一台能并发和独立地执行分别属于两个和多个用户的若干应用程序的计算机。
27.显示环境变量
28.列出指定用户的所有进程
29显示所有进程
30.将在后台运行的作业放到前台运行
31.访问日志
32.历史命令
33.寻找文件,提取数据见上
五、分析与讨论
上机的命令有很多,要重复操作,才能熟练掌握
六、教师评语成绩。
∣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,完成向用户输出“你好!”的问候语。
Linux实验总结在本次Linux实验中,我深入了解了Linux系统的基本概念、操作命令、文件系统、用户和组管理、进程管理等重要主题。
通过实际操作,我对Linux系统有了更深入的了解,增强了实践能力。
以下是我对本次实验的总结:一、实验目标本次实验的目标是熟悉Linux系统的基本操作,包括文件和目录管理、用户和组管理、进程管理以及系统工具的使用。
通过本次实验,我熟悉了Linux系统的基本操作命令,掌握了Linux 系统的文件系统结构和文件权限管理。
二、实验内容在实验过程中,我首先学习了Linux系统的基本操作命令,如cd、ls、mkdir、rm等。
接着,我进行了文件和目录管理,包括创建、删除、移动和重命名文件和目录。
我还学习了如何使用cp命令进行文件的复制,以及如何使用mv命令进行文件的移动。
在用户和组管理方面,我了解了如何创建用户和组,以及如何设置用户和组的属性。
我还学习了如何使用sudo命令为特定用户提供管理员权限。
进程管理方面,我学习了如何查看当前运行的进程,如何杀死不响应的进程,以及如何查看系统负载。
我还学习了如何使用crontab进行定时任务的管理。
三、实验收获通过本次实验,我收获了很多实践经验,加深了对Linux系统的理解。
我学会了如何使用Linux 系统进行文件和目录的管理,如何设置用户和组的属性,以及如何进行进程管理和定时任务的管理。
这些知识将对我未来的学习和工作产生积极的影响。
四、实验不足虽然本次实验取得了不错的成果,但我也发现了自己的不足之处。
在某些操作中,我仍然不够熟练,需要更多的练习和实践。
此外,我在处理一些复杂问题时,思考不够全面,需要加强自己的问题解决能力。
总的来说,本次实验对我来说是一次非常有价值的经历。
它不仅提高了我的实践能力,也增强了我的问题解决能力。
我会继续努力,提高自己的Linux技能,为未来的学习和工作做好准备。
LINUX操作系统实验报告姓名班级学号指导教师2011 年05月16 日实验一在LINUX下获取帮助、Shell实用功能实验目的:1、掌握字符界面下关机及重启的命令。
2、掌握LINUX下获取帮助信息的命令:man、help。
3、掌握LINUX中Shell的实用功能,命令行自动补全,命令历史记录,命令的排列、替换与别名,管道及输入输出重定向。
实验内容:1、使用shutdown命令设定在30分钟之后关闭计算机。
2、使用命令“cat /etc/cron、daliy”设置为别名named,然后再取消别名。
3、使用echo命令与输出重定向创建文本文件/root/nn,内容就是hello,然后再使用追加重定向输入内容为word。
4、使用管道方式分页显示/var目录下的内容。
5、使用cat显示文件/etc/passwd与/etc/shadow,只有正确显示第一个文件时才显示第二个文件。
实验步骤及结果:1.用shutdown命令安全关闭系统,先开机在图形界面中右击鼠标选中新建终端选项中输入命令Shutdown -h 302、使用命令alias将/etc/cron、daliy文件设置为别名named,左边就是要设置的名称右边就是要更改的文件。
查瞧目录下的内容,只要在终端输入命令即可。
取消更改的名称用命令unalias命令:在命令后输入要取消的名称,再输入名称。
3、输入命令将文件内容HELLO重定向创建文本文件/root/nn,然后用然后再使用追加重定向输入内容为word。
步骤与输入内容HELLO一样,然后用命令显示文件的全部内容。
4、使用命令ls /etc显示/etc目录下的内容,命令就是分页显示。
“|”就是管道符号,它可以将多个命令输出信息当作某个命令的输入。
5实验二文件与目录操作命令实验目的:1、掌握LINUX下文件与目录的操作命令,如pwd、cd、ls、touch、mkdir、rmdir、cp、mv、rm等。
实验2.L i n u x系统管理1.实验目的Linux系统各种文件系统的特点目录和结构权限系统模型用户管理用户组管理2.实验内容Linux目录结构# ls –l用户与权限# chown xu myfile目录的存取权限# ls –ld chen(目录名)chmod命令用户的帐户信息都保存在口令文件/etc/passwd为了保证系统的安全性,LINUX系统通常会对用户的口令进行shadow处理,也就是把用户口令保存到只有root用户才可读的/etc/shadow文件中,这个文件职可以称为影子文件。
该文件包含的用户名与/etc/passwd文件中的相同,并且存储了用户加密口令等相关信息。
# adduser liang此时就会在系统中添加了一个用户名称为liang的新用户。
通过终端为新用户,设置初始密码:命令如下;# passwd liang用userdel命令删除用户#userdel aa禁用liang.以root身份登录在终端上输入命令:# passwd –l liang启用liang.以root身份登录在终端上输入命令:# passwd –u liang修改用户名,将用户名:hjq 改为hanjieqiong,命令如下锁定:“hanjieqiong“用户,使其不能登陆,命令如下:该命令是通过在shadow文件中指定帐号的口令字段前加入锁定符号“!”锁定此用户的帐号的解锁“hanjieqiong”帐号:更改用户命令外壳shell# usermod –s /bin/tcsh hanjieqiong建立新组# groupadd newclass改变用户的初始组。
# usermod –g newclass hanjieqiong将用户添加到新组。
# usermod –G newclass, lp bin(要求此用户已经存在) 删除组# groupdel newclass3.实验数据4.实验总结本次实验了解了Linux系统各种文件系统的特点,Linux系统的目录和结构Linux系统的权限系统模型,Linux系统的用户管理和用户组管理,并通过linux 命令实际操作和配置。
linux操作系统实验报告书(1)一.实验名称:Linux基本命令的使用二.实验目的:1.进一步练习Linux登录和退出的方法2.练习与目录和文件操作相关的Linux命令:cd:切换目录mkdir:建立一个新目录cp:文件拷贝ls:显示目录及文件的内容mv:更改文件名称cat、more、less:浏览文件内容chmod:更改文件或目录的访问权限rm:删除文件rmdir:删除目录三.实验内容:1.登录进入Linux 系统。
2.将工作目录切换到根目录,用ls命令查看根目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。
3.在家目录下建立一个名为test的新目录,将工作目录切换到test下,然后将/tmp下的文件lesson.log拷贝到该目录下,并将lesson.log用mv命令改名为:TestRenName.txt。
4.用cat命令浏览文件TestRenName.txt的内容,用more命令进行浏览翻页操作。
再用less命令浏览文件TestRenName.txt的内容。
5.用ls命令查看test下的文件的权限,并更改文件TestRenName.txt的权限为:只允许自己读写,不允许其他用户访问。
用ls命令查看更改后的结果后再将文件TestRenName.txt的权限更改为系统默认的权限:-rw-r--r--。
6.用rm命令删除test目录下的所有文件,再用rmdir命令删除test目录。
7.用logout命令退出系统。
四.结果分析:五.实验心得*********************************************************************linux操作系统实验报告书(2)一.实验名称:Linux基本命令的使用二.实验目的:1. 掌握监视系统的几个Linux基本命令:PS--查看系统的进程tty--查看当前使用的终端df--查看系统的文件系统的空间使用情况du--查看具体某个文件和目录的磁盘空间的占用情况free--查看使用的内存资源的情况2. 掌握Linux下的联机帮助手册的使用3. 掌握Linux命令的简要帮助的获取方法4. 掌握一些其他常用的Linux命令:cal--显示日历date--显示系统的日期和时间clear--清屏find--查找文件uname--查看系统信息who--查看其他登录的用户which--查看命令的全路径tar--Linux下的压缩与解压缩命令三.实验内容:1.使用ps查看系统的进程运行情况,使用不同的命令选项并比较显示结果的差别;查看当前系统已安装的文件系统的空间使用情况;查看用户的家目录占用了多少空间;查看使用的内存资源的情况.2.查看ls命令的详细使用方法,查看ps命令的详细使用方法.3.获取ls命令的简要帮助信息,获取ps命令的简要帮助信息.4.用cal命令显示日历,用date命令显示系统的日期和时间,用clear清除屏幕,用find命令在系统中查找文件ch1.doc,用uname命令查看系统的信息,用who 命令查看其他登录的用户,用which命令查看一些命令的全路径,用tar命令来压缩test目录下的所有后缀为doc的文件到文件doc.tar.gz中,将doc.tar.gz 复制到用户的家目录并展开压缩文件.四.结果分析:1. 要查看系统的进程运行情况可使用ps命令:[stu@cs-linux stu]$ psPID TTY TIME CMD4442 pts/0 00:00:00 bash11683 pts/0 00:00:00 ps第一列中的PID表示进程编号,第二列中的TTY表示提交该进程的终端号,第三列中的TIME表示该进程已运行的时间,第四列中的CMD表示该进程所对应的命令.如果要显示进程更详细的信息,可以使用参数ps u:[stu@cs-linux stu]$ ps uUSER PID %CPU %MEM VSZ RSSTTY STAT START TIME COMMAND501 4442 0.0 0.3 5560 784 pts/0 S 09:45 0:00 bash501 11684 0.0 0.2 2592 644 pts/0 R 10:16 0:00 ps -uUSER表示进程拥有者,%CPU表示CPU时间的占用比例,%MEM表示内存的占用比例,VSZ表示进程的大小,RSS表示常驻内存部分大小,START表示进程的启动时间.如果要用长格式显示系统进程的信息,可以使用参数ps l:[stu@cs-linux stu]$ ps lFS UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME C MD4 S 501 4174 4173 0 75 0 - 1389 wait4 pts/0 00:00:00 bash0 R 501 4201 4174 0 80 0 - 776 - pts/0 00:00:00 ps要查看当前系统已安装的文件系统的空间使用情况,使用命令df:[stu@cs-linux stu]$ df文件系统1K-块已用可用已用% 挂载点/dev/hda7 9574520 2833764 6254392 32% /none 111472 0 111472 0% /dev/shm/dev/hda5 30701232 13538096 17163136 45% /mnt/hdd要查看用户的家目录占用了多少空间,先将工作目录切换到家目录,再使用命令du:[stu@cs-linux stu]$ du12 ./.kde/Autostart16 ./.kde8 ./.xemacs4 ./test64 .以上结果表示家目录公占用64KB的空间.要查看使用的内存资源的情况,应使用命令free:[stu@cs-linux stu]$ freetotal used free shared buffers cached Mem: 222948 216688 6260 0 17832 92792 -/+ buffers/cache: 106064 116884Swap: 514040 0 514040以上结果表示系统内存及交换空间使用情况.2. 查看ls命令的详细使用方法,使用命令man ls:[stu@cs-linux stu]$ man ls(.......显示内容省略)查看ps命令的详细使用方法,使用命令man ps:[stu@cs-linux stu]$ man ps(.......显示内容省略)3. 获取ls命令的简要帮助信息,可使用命令ls --help:[stu@cs-linux stu]$ ls --help(.......显示内容省略)获取ps命令的简要帮助信息,可使用命令ps --help:[stu@cs-linux stu]$ ps --help(.......显示内容省略)4. 要显示日历可使用命令cal:[stu@cs-linux stu]$ cal六月2004日一二三四五六1 2 3 4 56 7 8 9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30以上用命令cal不加任何参数时显示当月日历,如果要指定查看某年某月的日历,可以加[月][年]参数,如要查看2004年8月:[stu@cs-linux stu]$ cal 08 2004八月2004日一二三四五六1 2 3 4 5 6 78 9 10 11 12 13 1415 16 17 18 19 20 2122 23 24 25 26 27 2829 30 31要显示系统的日期和时间,可使用命令date:[stu@cs-linux stu]$ date五6月18 11:23:23 CST 2004表示当前时间为2004年6月18日星期五11:23:23.用clear命令清除屏幕,之后将把已前显示的结果清除:[stu@cs-linux stu]$ clear用find命令在系统中查找文件ch1.doc,应首先退出到根目录下,在使用命令find ch1.doc:[stu@cs-linux /]$ cd /[stu@cs-linux /]$ find / -name "ch1.doc"find: /home/wb: 权限不够/home/stu/test/ch1.doc结果表示找到的文件在/home/stu/test/目录下.用uname命令查看系统的信息:[stu@cs-linux /]$ unameLinux用who命令查看其他登录的用户:[stu@cs-linux /]$ whostu tty1 Jun 18 14:22root pts/0 Jun 18 14:23 (:0.0)用which命令查看一些命令的全路径,如查看命令ls和ps的全路径:[stu@cs-linux /]$ which lsalias ls='ls --color=tty'/bin/ls[stu@cs-linux /]$ which ps/bin/ps用tar命令来压缩test目录下的所有后缀为doc的文件到文件doc.tar.gz中,如下:[stu@cs-linux test]$ tar cvf doc.tar.gz *.docch1.docch2.doc[stu@cs-linux test]$ lsch1.doc ch2.doc doc.tar.gz sesson.txt使用命令加参数cvf来打包所有后缀为doc的文件,参数c表示建立新文档,参数v表示在处理过程中显示相关信息,参数f表示以文件方式打包.现test目录下共有doc文件2个,所以显示ch1.doc,ch2.doc.打包后用ls命令查看,发现多了一个doc.tar.gz文件,表明操作成功.将doc.tar.gz复制到用户的家目录并展开压缩文件:[stu@cs-linux test]$ cd ..[stu@cs-linux stu]$ cp test/doc.tar.gz doc.tar.gz[stu@cs-linux stu]$ tar xvf doc.tar.gz *.docch1.docch2.doc[stu@cs-linux stu]$ lsch1.doc ch2.doc doc.tar.gz test第三行的参数x表示解包文件.五.实验心得这一章主要学习了Linux下的一些关于监视系统的命令以及一些常用辅助命令,对于一个Linux的系统管理员,掌握这些命令的使用是非常重要的,因为这些命令不仅可以让系统管理员了解到系统的运行情况,还可以了解到磁盘及内存的占用情况,以便系统管理员根据情况作出相应调整。
实验1:安装L i n u x系统
【实验目的和要求】:安装Linux系统,掌握操作系统的系统配置,建立应用环境的过程。
【实验内容】:
1、首先在windows系统中安装虚拟机。
在网上找到VMwareWorksttionPro版本,
确定安装目录。
一直下一步,不需要太多的说明。
2、
图为安装完成后的界面。
3、然后在阿里巴巴开源镜像网站下载centos系统镜像,然后虚拟机创建新的虚
拟机,
进行一些简单的虚拟机设置,设置了网络链接nat模式等等。
安装完成后的界面
实验2:Linux下c语言开发
【实验目的】:学会和掌握用c语言开发一个应用程序的全过程,包括,编译,调试等等。
【实验步骤】:首先在系统中查看是否已经安装有gcc,输入查看命令发现没有,于是需要安装gcc。
在centos系统中可以使用比较简便的yum命令。
在之前已经配置好了yum源。
直接输入yuminstallgcc。
回车自动安装程序和需要的依赖包。
因为虚拟机中和电脑很多地方切换使用不方便,所以安装了xshell软件。
图为xshell中的截图。
安装完毕。
然后使用vi或者vim编写hello.c
运行,在屏幕上打印出hello,world。
实验3:进程创建
【实验目的和要求】1.了解进程的概念及意义;2.了解子进程和父进程
3.掌握创建进程的方法。
【实验内容】1.子进程和父进程的创建;
2.编写附件中的程序实例
【实验步骤】一1、打开终端,输入命令gedit1_fork.c,在1_fork.c文件中输入1_fork.bmp中的代码;
2、输入命令gcc1_fork.c-o1_fork,回车后显示无错误;
3、输入命令:./1_fork运行程序。
二、1、打开终端,输入命令gedit2_vfork.c,在2_vfork.c文件中输入2_vfork.bmp 中的代码;
2、输入命令gcc2_vfork.c-o2_vfork,回车后显示无错误:
3、输入命令:./2_vfork 运行程序。
从上面可以看到两次的运行结果不一样。
我们知道write函数是不带缓存的。
因为在fork之前调用write,所以其数据写到标准输出一次。
但是,标准I/O库是带缓存的。
如果标准输出连到终端设备,则它是行缓存的,否则它是全缓存的。
当以交互方式运行该程序时,只得到printf输出的行一次,其原因是标准输出缓存由新行符刷新。
但是当将标准输出重新定向到一个文件时,却得到printf输出行两次。
其原因是,在fork之前调用了printf一次,当调用fork时,该行数据仍在缓存中,然后在父进程数据空间复制到子进程中时,该缓存数据
也被复制到子进程中。
于是那时父、子进程各自有了带该行内容的缓存。
在exit 之前的第二个printf将其数据添加到现存的缓存中。
当每个进程终止时,缓存中的内容被写到相应文件中。
实验4进程通信
【实验目的和要求】
1、了解进程通信的概念及方法;
2、了解信号量、管道;
3、掌握出号量、管道和命名管道编程方法。
【实验原理】
匿名管道只能用于具有亲像关系的两进程之间通值。
一个进程在由pipe()创建管道后,一般用fork()函数复制一个子进程,然后通过管道实现父子进程间的通信,也可通过fork()函故复制多个说程实现兄始进程之间的通信,管道两端可分刚用指述字
【实验步骤】1、程序lucy.c创建了FIFOwrite_fifo用于向程序peter.c发送消息;peter.c程序创建了FIFOread_fifo用于向lucy.c发送消息;同时,lucy.c能够通过打开peter.c创建的FIFO来得到的peter.c发来的消息,peter.c能够通过打开lucy.c 创建的FIFO来得到lucy.c发来的消息。
因此两者就能互相通信了,两者必须在线才能进行通信聊天,这个与qq的聊天功能有些类似。
2、将lucy.c和peter.c的代码编写完后,在一个终端调试即gcclucy.c–olucy,无错误后运行./lucy;在另外一个新终端上调试即gccpeter.c–opeter,无错误后运行./peter;开始进行聊天,若想结束聊天,则在一个终端上输入bye,俩个终端就会同时关闭。
【实验结果】
实验5多线程实现单词统计工具
【实验目的】:利用多线程实现文档单词书的统计
【实验原理】:区分单词原则:凡是一个非字母或数字的字符跟在字母或数字的后面,那么这个字母或数字就是单词的结尾。
.
允许线程使用互斥锁来修改临界资源,确保线程间的同步与协作。
如果两个线程需要安全地共享-一个公共计数器,需要把公共计数器加锁。
线程需要访问称为互斥锁的变量,它可以使线程间很好地合作,避免对于资源的访问冲突。
【实验步骤】:第一步先创建两个待统计的文件1.text,2.text
第二步创建一个.c文件里面敲多线程创建单词统计工具代码
这里面包含了pthread.h这一个头文件,因此再用gcc编译的时候与以往的有所不同,需要改为gcc-o<目的文件名>
<原文件名>-lpthread
【运行结果】
实验6:搭建ftp服务器服务端【实验目的】:我们知道ftp是Tcp/ip协议中的一个文件传输协议,用来进行与客户端的文件的传输和下载,客户端可分为匿名用户登录和实名用户登录。
下面我们就来安装配置ftp服务器服务端。
【实验步骤】第一步,进入Linux图形界面,输入用户名密码进入命令行界面。
第二步,安装ftp服务器软件,命令是sudoapt-getinstallvsftpd,我们安装的是vsftpd 这个软件,
第三步,修改配置文件,进入etc(cdetc),然后,sudovivsftpd.conf进入配置环境,第四步,将lensen-ipv6改成yes,意味着客户端可以进行访问,w/r都要改成yes,chown-username改成whoever,意味着可以任何人都可以访问,其他的也最好都改成yes,然后esc+wq返回根目录。
第五步,重启服务器使配置生效。
Sudoservicevsftpdrestard.
①客户端,实名用户登录
ftp+ip
输入用户名
密码
退出:bye/exit/quit
文件上传和下载
上传:put+文件名
下载:get+file
但是不允许操作目录,如果操作目录只能打包
②匿名用户登录
ftp+ip
用户名+anonymous(匿名)
密码:无
不允许匿名用户在任意用户切换,只能在指定的范围的内工作,否则需要在ftp服务器上下创建一个匿名用户登录的目录。