




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档中南大学Linux系统实验报告 目 录实验一39实验二1016实验三1717实验一 Shell程序设计 实验目的 理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。 实验内容 考勤模拟Shell程序设计用shell设计一个考勤模拟程序,实现如下功能选择界面:1.上班签到2.下班签出3.缺勤信息查阅4.退出考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat。如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。如果用户选择缺勤信息查询,则将check.dat中对应该用户的迟到早退信息查出并显示。用户选择功能执行完,shell程序继续回到功能选择界面等待下一个用户进行操作。1、 实验分析本实验是shell程序设计,主要目的是理解shell程序的设计方法以及熟悉shell程序的编辑、运行、调试方法与过程。Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。本实验要求设计一个考情模拟的shell程序,按照题目要求,可将整个程序分为五个部分:main函数以及四个功能函数,及一个功能对应一个函数。1、 上下班签到将此函数定义为 check_in();根据题目要求,运行程序后首先要求用户输入用户名和密码,当用户名密码正确时才可进入,这就要用到shell编程中的变量,shell中的变量和C语言或是JAVA中的变量都有所不同,shell中的变量不需要事先声明,给一个变量赋值实际上就定义了一个变量,并且shell程序中的变量是无类型的。我们定义两个变量name和password,由题目要求,用户名和密码需要由用户输入,因此我们定义的变量应该从键盘获取输入值,使用如下语句:read name password;我们在开发程序前应先创建一个文件userinfo.dat用于存放用户的用户名和密码,当用户输入用户名和密码后就要判断该用户是否合法。方法为从userinfo.dat文件中逐行读取数据,并判断是否与用户输入的用户名相同,当遇到相同的用户名时就表明该用户是合法的,可以退出文件的读取,转入判断该用户输入的密码是否正确。从文件中逐行读取数据方法:if test -e /home/poe/userinfo.datthenwhile read u_name u_passworddoif test $name = $u_namethen break;elsecontinue;fidone /home/poe/userinfo.dat用户名和密码正确后用户进入系统,系统显示用户签到成功,此时还要判断此时的时间是否大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat。2、 下班签出将此函数定义为check_out() ,前面部分和上一个函数check_in()相同,都为判断用户输入的用户名和密码。不同之处在于记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。3、 缺勤信息查阅将此函数定义为look(),首先还是判断该用户输入的用户名和密码是否正确。用户进入系统之后就要打印出该用户的签到信息,将check.dat中对应该用户的迟到早退信息查出并显示。在这一步中,首先还是要从check.dat文件中逐行读取数据,不过并不直接打印,而是要等判断用户名后才能打印。while read recorddouser=$record% *;if test $user = $namethenecho $record;fidone /home/poe/check.dat其中user=$record% *;语句表示截取record字符串从左边起第一个空格前的字符串,也就是用户名,然后检查和该用户的用户名是否匹配,若匹配则打印否则读取下一条。2、 实验源码#! /bin/bashfunction show()echo -Welcome to Attandance System-;echo - 1.check in -;echo - 2.check out -;echo - 3.late -;echo - 4.exit -;echo Please input your choice:;function check_in()echo Please input your name and password:;read name password;if test -e /home/poe/userinfo.datthenwhile read u_name u_passworddoif test $name = $u_namethen break;elsecontinue;fidone check.dat;fifielseecho There is no this file;fifunction check_out()echo Please input your name and password:;read name password;if test -e /home/poe/userinfo.datthenwhile read u_name u_passworddoif test $name = $u_namethen break;elsecontinue;fidone check.dat;fifielseecho There is no this file;fifunction look()echo Please input your name and password:;read name password;if test -e /home/poe/userinfo.datthenwhile read u_name u_passworddoif test $name = $u_namethen break;elsecontinue;fidone /home/poe/userinfo.datif test $name != $u_namethenecho Sorry,your name is wrong!;elif test $password != $u_passwordthenecho Sorry,your password is wrong!;elsewhile read recorddouser=$record% *;if test $user = $namethenecho $record;fidone /home/poe/check.datfielseecho There is no this file;fifunction main()clear;show;read choice;case $choice in1) check_in;2) check_out;3) look;4) exit;*) echo Please input 14;esacmain;3、 实验步骤及截图进入终端,输入./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) 详细记录程序调试及运行结果1、 Makefile思路分析在本实验中编写输入学生人数及分数,计算学生的总成绩以及平均成绩的程序,源程序如下:/*main.c*/#include #include chengji.hint main()int n,i;float sum,avg;printf(please input the number ofstudents:);scanf(%d,&n);float scoren;for(i=0;in;i+)printf(please input the score of student%d,i);scanf(%d,&scorei);sum=fun_sum(score,n);avg=fun_avg(score,n);printf(the sum is %f,the avg is %f,sum,avg);/*chengji.h*/float fun_sum(float array,int n);float fun_avg(float array,int n);/*fun_sum.c*/float fun_sum(float array,int n)float sum=0.0;for(int i=0;in;i+)sum+=arrayi;return sum;/*fun_avg.c*/float fun_avg(float array,int n)float avg=0.0;for(int i=0;in;i+)avg+=arrayi;avg/=n;return avg;Makefile文件如下:main:main.o fun_sum.o fun_avg.ogcc main.o fun_sum.o fun_avg.o -o mainmain.o:main.c chengji.hgcc main.c -cfun_sum.o:fun_sum.cgcc fun_sum.c -cfun_avg.o:fun_avg.cgcc fun_avg.c -c运行结果如下:2、 读者-写者思路分析读写信号量的特点是:1. 同一时刻最多有一个写者(writer)获得锁;2. 同一时刻可以有多个读者(reader)获得锁;3. 同一时刻写者和读者不能同时获得锁;由于读者可以同时获得锁,因此提高了系统的并发程度,进而提高了系统的性能。源程序如下: #include #include #include / 定义数据类 class data public: data(int i, float f): I(i), F(f) int I; float F; ; / 读者写者读写的内容 data *p_data = NULL; pthread_rwlock_t lock; / 写者数目 const int WRITER_NUMBER = 2; void *reader(void *arg); void *writer(void *arg); int main(int argc, char *argv) pthread_t reader_tid; pthread_t writer_tidWRITER_NUMBER; pthread_create(&reader_tid, NULL, reader, NULL); for (int i = 0; i I, p_data-F); pthread_rwlock_unlock(&lock); return (void *)0; void *writer(void *arg) pthread_detach(pthread_self(); while (true) pthread_rwlock_wrlock(&lock); printf(writer is writing the data; ); if (p_data = NULL) p_data = new data(1, 1.1f); printf(writer create the data (%d, %f)n, p_data-I, p_data-F); else delete p_data; p_data = NULL; printf(writer free the datan); pthread_rwlock_unlock(&lock); return (void *)0; 实验三: Proc文件系统【实验目的】本实验作业将通过Proc文件系统观察整个系统的一些重要特征,并要求编写一个程序,利用Proc文件系统获得和修改系统的各种配置参数。【实验内容】1、以超级用户的身份登录Linux系统,并进入/proc目录,输入ls
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国天然橡胶工业项目创业计划书
- 重庆市人民医院护理服务资源配置考核
- 邯郸市中医院微创手术进阶考核
- 厦门石油钻井工具项目可行性研究报告
- 中国储氢材料项目经营分析报告
- 2025年中国酸性染料和媒染染料项目投资计划书
- 中国苯甲酸银项目创业计划书
- 2025年浪潮软件集团有限公司-企业报告(供应商版)
- 中国润滑脂防冻液项目经营分析报告
- 2025年中国纳米硫化锌项目创业计划书
- 铁路下穿高速公路安全评价报告
- 《中国民间故事》整本书阅读交流展示课ppt课件(完美版) 小学语文五年级必读书目快乐读书吧
- 运动营养学全套教学课件
- 楼宇自控系统报价清单
- 商旅服务方案(详细版)
- 麻醉机注册技术审查指导原则(2019年 )
- 激光切割机使用说明书
- 《今天是你的生日》(课堂PPT)
- 技术支持资料
- shimax岛通仪表说明书技术参数mac
- 2022年沈阳大学专升本(英语)科目考试(重点)题库
评论
0/150
提交评论