linux实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学
Linux系统实验报告
目录
实验一····································3~9 实验二···································10~16 实验三··································17~17
实验一 Shell程序设计
[ 实验目的 ]
理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。
[ 实验内容 ] 考勤模拟Shell程序设计
用shell设计一个考勤模拟程序,实现如下功能选择界面:
1.上班签到
2.下班签出
3.缺勤信息查阅
4.退出
考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。
如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat。
如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。
如果用户选择缺勤信息查询,则将check.dat中对应该用户的迟到早退信息查出并显示。
用户选择功能执行完,shell程序继续回到功能选择界面等待下一个用户进行操作。
一、实验分析
本实验是shell程序设计,主要目的是理解shell程序的设计方法以及熟悉shell程序的编辑、运行、调试方法与过程。
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
本实验要求设计一个考情模拟的shell程序,按照题目要求,可将整个程序分为五个部分:main函数以及四个功能函数,及一个功能对应一个函数。
1、上下班签到
将此函数定义为check_in();根据题目要求,运行程序后首先要求用户输入用户名和密码,当用户名密码正确时才可进入,这就要用到shell编程中的变量,shell中的变量和C语言或是JA V A中的变量都有所不同,shell中的变量不需要事先声明,给一个变量赋值实际上就定义了一个变量,并且shell程序中的变量是无类型的。
我们定义两个变量name和password,由题目要求,用户名和密码需要由用户输入,因
用户输入用户名和密码后就要判断该用户是否合法。方法为从userinfo.dat文件中逐行读取数据,并判断是否与用户输入的用户名相同,当遇到相同的用户名时就表明该用户是合法的,可以退出文件的读取,转入判断该用户输入的密码是否正确。
用户名和密码正确后用户进入系统,系统显示用户签到成功,此时还要判断此时的时间是否大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat。
2、下班签出
将此函数定义为check_out() ,前面部分和上一个函数check_in()相同,都为判断用户输入的用户名和密码。不同之处在于记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。
3、缺勤信息查阅
将此函数定义为look(),首先还是判断该用户输入的用户名和密码是否正确。用户进入系统之后就要打印出该用户的签到信息,将check.dat中对应该用户的迟到早退信息查出并显示。
在这一步中,首先还是要从check.dat文件中逐行读取数据,不过并不直接打印,而是
要等判断用户名后才能打印。
其中user=${record%% *};语句表示截取record字符串从左边起第一个空格前的字符串,也就是用户名,然后检查和该用户的用户名是否匹配,若匹配则打印否则读取下一条。
二、实验源码
function main(){
clear;
show;
read choice;
case $choice in
1) check_in;;
2) check_out;;
3) look;;
4) exit;;
*) echo "Please input 1~4";;
esac
}
main;
三、实验步骤及截图
进入终端,输入./attand.sh
实验2 Linux 高级程序设计-进程通信
1、实验目的
(1)了解Linux操作系统下应用程序开发流程
(2)掌握GNU工具链的使用
(3)了解Linux高级编程技巧(例如IPC机制、系统调用等)
2、实验内容
(1)编写一个简单的C语言程序,编写Makefile文件。了解编译过程,并用gdb进行调试。
(2)以下任选其一:
1.编写一个多进程通信程序,采用Message Queue或shared Memory或者
Pipeline File机制进行通信
2.编写一个实现读者-写者问题的程序,用信号量机制
备注:读者-写者问题
设有一组共享数据DB和两组并发进程,一组进程只对此组数据执行读操作,另一组进程可对此组数据执行写操作(同时也可以执行读操作)。将前面一组进程称为读者,后一组进程称为写者。为了保证共享数据的完整性,要求:(1)多个读者的操作可以同时进行
(2)多个写者的操作不可同时进行
(3)任何读者与写者的操作不可同时进行
3、实验要求
(1)写出源程序,并编译运行
(2)详细记录程序调试及运行结果