《Linux应用实践》课程设计报告学院:专业:姓名:学号:指导教师:王学文年月日摘要Linux诞生于1991年,是一个自由的,免费的,源码开放的操作系统。也是开源软件中最著名的例子。其最主要的目的就是为了建立不受任何商品化软件版权制约的,全世界都能使用的类Unix兼容产品.而我们将服务器部署在Linux将会更加的稳定、安全、高效以及出色的性能。目前国内越来越多的服务器应用也开始转向linux平台,学习并掌握如何使用linux对计算机相关专业的学生来说具有重大的意义。关键词:linux,shell,gcc目录1.前言.........................................................................................................................................12.需求分析..................................................................................................................................12.1课程设计主要任务...........................................................................................................12.2开发环境......................................................................................................................12.3相关工具的的介绍与使用........................................................................................13.程序设计....................................................................................................................................23.1概要设计..........................................................................................................................23.1.1shell9题目分析...............................................................................................23.1.2system6题目分析...............................................................................................33.1.3system7题目分析...............................................................................................33.2详细设计.........................................................................................................................33.2.1shell9过程设计...............................................................................................33.2.2system6过程设计.............................................................................................43.2.3system7过程设计.............................................................................................74.代码测试与分析.........................................................................................................................74.1shell9测试与分析....................................................................................................74.2system6测试与分析....................................................................................................84.3system7测试与分析....................................................................................................8参考文献.......................................................................................................................................9心得体会.....................................................................................................................................10附录.............................................................................................................................................111.前言本次linux应用实践课程设计通过在linux系统下完成shell编程和system编程,提高对linux系统使用的熟练程度,培养以及锻炼自己的动手学习能力。通过完成课程设计内容,让自己能够对linux拥有更加深入的了解。由于基础知识欠缺,本次课程设计所涉及的内容较为基础,同时也有利于初学者理解和自己以后的回顾。在这次课程设计中,完成了linuxshell程序设计与system程序设计,通过简单的程序设计掌握基础的shell编程以及gcc的使用。2.需求分析2.1课程设计主要任务根据课程设计任务列表,随机选取一个shell编程题目和两个系统编程题目(题目编号之和=15)。本人选取的题目为为shell9,system6,system7。2.2开发环境本次课程设计使用linux操作系统,shell采用的为bash,同时使用vim文本编辑工具编写代码,使用gcc编译。各软件版本号如下:操作系统:centos7.2Bash:4.2.46gcc:4.8.5vim:7.42.3相关工具的的介绍与使用①linux操作系统本次使用的linux操作系统为centos7.2,是一个流行的linux发行版本,使用的内核版本为3.10.0。在本次课程设计中,操作系统版本没有具体要求,只要使用linux内核的操作系统都是可行的,建议将系统安装到虚拟机。②bashbash(GNUBourne-AgainShell)是大多数Linux系统默认的shell,它能运行于大多数类Unix风格的操作系统之上。linux系统上都还有其他的Shell,例如tcsh、csh、ash、bsh、ksh等等。shell脚本文件大致都类同,使用的方法为在终端使用命令”bashfilename”执行shell脚本文件,或者在脚本文件首行添加“#!/bin/bash”,再给脚本文件添加执行权限后执行shell脚本文件。③gcc通常所说的GCC是GUNCompilerCollection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。gcc的编译过程通常包含了四个步骤,分别为预处理--编译--汇编--链接四步。可以通过如下指令来编译出一个可执行文件:gccfilename.c此命令执行完后会生成一个a.out的可执行文件。同时也可以指定生成的可执行文件名,命令如下:gccfilename.c-ofilename.out此命令执行完后会生产一个名为filename.out的可执行文件。gcc还有许多命令,详细部分不是本文所讨论的内容。④vimvi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(viImproved),与vi编辑器完全兼容,而且实现了很多增强功能。vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用vi编辑器就必须熟练掌握着两种模式的切换。3.程序设计3.1概要设计3.1.1shell9题目分析问题描述:编写一个shell脚本ex9.sh,根据键盘输入的值,给出对应的提示输出;输入[A–Z],输出UppercaseLetter;输入[a-z],输出LowercaseLetter;输入[0-9],输出Digit;输入其他,输出Punctuation,whitespace,orother。算法分析:可以使用bashshell中的read命令接收键盘的输入,得到输入后,read命令将数据放入一个标准变量中。通过grep命令使用正则表达式对变量的值进行内容匹配,若匹配出大写字母则使用echo命令输出UppercaseLetter,同理若匹配出小写或数字则输出相应的内容。3.1.2system6题目分析问题描述:首先建立一个守护进程,然后让该守护进程每隔10s在/tmp/dameon.log中写入一句话。算法分析:首先用fork()函数建立一个子进程,建立成功后退出父进程,使用setsid()函数在子进程中创建新会话,使子进程摆脱其他进程的影响。再改变当前目录为根目录,避免在运行过程中对文件系统操作时产生的诸多麻烦。重设文件权限掩码,增强守护进程的灵活性。然后关闭从父进程中继承的文件描述符。做完以上步骤后,在子进程中使用open()函数打开/tmp/dameon.log文件,使用sleep()函数每隔10秒用write()函数向文件中写入一句话。3.1.3system7题目分析问题描述:在tmp目录下调用open()函数,以可读可写的方式创建hello.c文件。open函数带有3个flag参数:O_CREATE、O_TRUNC、O_WRONLY,文件权限设置为0600。算法分析:使用chdir将当前目录改为tmp目录,使用open()函数打开hello.c文件,同时带上3个flag参数:O_CREATE、O_TRUNC、O_WRONLY,文件权限设置为0600。3.2详细设计3.2.1shell9过程设计关键代码:readawhiletruedoi