linux实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)详细记录程序调试及运行结果

相关文档
最新文档