《Linux应用实践》课程设计分析.docx
《《Linux应用实践》课程设计分析.docx》由会员分享,可在线阅读,更多相关《《Linux应用实践》课程设计分析.docx(16页珍藏版)》请在冰点文库上搜索。
《Linux应用实践》课程设计分析
计算机科学与工程学院
《Linux应用实践》
课程设计报告书
设计题目:
《Linux应用实践》课程设计报告
专业:
网络工程
班级:
13003602
学生姓名:
周幸谋
学号:
1300360230
指导教师:
王学文
2015年10月31日
计算机科学与工程学院课程设计任务书
姓名
周幸谋
学号
1300360230
设计题目一
Shell-9
设计题目二
System-5
设计题目三
System-7
设计目的、主要内容(参数、方法)及要求
本课程设计应达到以下目的:
1.使学生掌握Linux基本操作命令;
2.培养Shell编程能力;
3.培养Linux系统编程能力;
4.提高C/C++程序设计能力;
5.培养编写程序设计文档能力。
工作量
2周时间,共计32学时
进度安排
第1天:
Linux概述论述;Linux系统现状与特点及安装
第2天:
文本编辑vi及vi的工作方式
第3-5天:
Linuxshell程序设计
第6天:
GCC编译系统;GDB调试工具
第7-10天:
Linux环境编程
第11-13天:
撰写课程设计文档
摘要
Linux是一套免费使用和自由传播的类UNIX操作系统,它主要用于基于Intelx86系列cpu的计算机上。
这个系统是由全世界各地的成千上万的程序员设计和实现的,其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
本次课程设计,主要为了熟练掌握Linux下常用的命令以及shell编程和system编程以及gcc的简单使用,对一些细节进行了详细的分析。
通过本次课程设计,提高了我们对Linux的理解和实践操作综合应用能力。
关键词:
Linux;Shell编程;System编程
目录
前言5
1.Linux的简介5
1.1什么是Linux5
1.2Linux系统的主要特点6
1.3Linux的组成6
2基本的文本编辑器及它们的使用方法7
2.1gedit和vi的使用7
2.2GCC的使用7
3编程详细设计8
3.1Shell编程8
3.2System编程8
4编程测试11
4.1shell编程测试11
4.2system编程测试11
5心得体会12
6参考文献13
7附录14
前言
Linux系统是一种自由和开放源代码的类UNIX操作系统。
目前存在着许多不同的Linux,但它们都使用了Linux内核。
Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。
Linux是一个领先的操作系统,世界上运算最快的超级计算机运行的都是Linux操作系统。
严格来说,Linux这个词本身只代表Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。
Linux得名于计算机业余爱好者LinusTorvalds。
Linux凭借其自由、免费、开放源代码的优势,经过来自互联网、遍布全球的程序员的努力,再加上IBM、Sun等计算机巨头的支持,Linux在手机操作系统市场中异军突起,尤其是在众多知名厂商宣布支持Linux手机操作系统之后,Linux的发展将不容忽视。
由于Linux具有源代码开放、软件授权费用低、应用开发人才资源丰富等优点,便于开发个人和行业应用。
这一可控认证系统,特点非常重要,因为丰富的应用是智能手机的优越性和关键卖点所在。
从应用开发的角度看,由于Linux的源代码是开放的,有利于独立软件开发商(ISV)开发出硬件利用效力高、功能强大的软件,也方便行业用户开发自己的安全。
1.Linux的简介
1.1什么是Linux
简单地说,Linux是一套免费使用和自由传播的类UNIX操作系统,他主要用于基于Intelx86系列cpu的计算机上。
其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品。
Linux以它的高效性和灵活性著称。
它能够在个人计算机上实现全部的UNIX特性,具有多任务、多用户的能力。
Linux可在GNU公共许可权限下免费获得,是一个符合POSIX标准的操作系统。
Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。
它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用WindowsNT一样,允许我们使用窗口、图标和菜单对系统进行操作。
1.2Linux系统的主要特点
开放性:
只系统统遵循世界标准规范,特别是遵循开放系统互联(OSI)国际标准。
多用户:
是指系统资源可以被不同用户使用,每个用户对自己的资源有特定的权限,互不影响。
多任务:
它是指计算机同时执行多个程序,而且各个程序的运行相互独立。
良好的用户界面:
Linux想用户提供两种界面:
用户界面和系统调用。
Linux还为用户提供了图形用户界面。
它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。
设备独立性:
是指操作系统把所有外部设备统一当成文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,二不必知道它们的具体存在形式。
Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,提供了丰富的网络功能,完善的内置网络是Linux一大特点。
可靠的安全系统:
Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。
良好的可移植性:
是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。
Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行
1.3Linux的组成
Linux的内核:
内核是系统的核心,是运行程序和管理像磁盘和打印机等件设备硬件的核心程序。
LinuxShell:
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
Linux文件系统:
Linux文件系统是文件存放在磁盘等存储设备上的组织方法。
Linux能支持多种目前的文件系统,如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB等。
Linux应用系统:
标准的Linux系统都有一整套称为应用程序的程序集,包括文本编辑器、编译语言、XWindow、办公套件、Internet工具、数据库等。
2基本的文本编辑器及它们的使用方法
2.1gedit和vi的使用
Gedit和vi是Linux下常用的两个文本编辑器,它们的使用方法如下:
1.gedit文本编辑器的使用:
第一步,在shell中键入:
#gedit;
第二步,在弹出的窗口中编辑源程序,然后保存即可
2.Vi文本编辑器的使用:
Linux提供了功能强大的文本编辑器vi
编辑文本的命令为:
#vi文件名;可以附加命令参数有:
+n:
打开文件,并将光标置于第n行行首
+:
打开文件,并将光标置于最后一行行首
+/string:
打开文件,并将光标置于第一行与string匹配的字符串处
-r:
在上次使用vi编辑时发生系统崩溃,恢复文件
打开vi后,首先是命令模式,按i进入输入模式,按Esc然后出入“:
”进入底行模式,输入w保存文档,其后可加要保存的文件名;输入wq/zz/x进行保存退出;输入q!
不保存退出。
2.2GCC的使用
GCC(GNUCompilerCollection,GNU编译器集合),是一套由GNU开发的编程语言编译器。
GCC原本是GNU操作系统的官方编译器,现已被大多数类Unix操作系统为标准的编译器,同样适用于微软的windows。
基本使用格式:
gcc[options][filenames]
其中:
options:
编译器所需要的编译选项
filenames:
要编译的文件名
例如本设计中用到命令:
gccsystem5.c-osystem5
将system5.c代码文件编译生成可执行文件system5
3编程详细设计
3.1Shell编程
【问题描述与稳如要求】
编写一个shell脚本ex9.sh,根据键盘输入的值,给出对应的提示输出;输入[A-Z],输出UppercaseLetter;输入[a-z],输出LowercaseLetter;输入[0-9],输出Digit;输入其他,输出Punctuationwhitespace,orother。
【设计思路】
根据题目看,这是一道分支结构题目。
所以可选择case分支或者ifelif分支结构。
定义一个变量chr,从键盘读入该变量值,根据这个值的ASCII码进行if、elif判断,满足相关条件,则用输出语句echo输出对应结果。
(完整代码见附录)
if[$ascii–le90–a$ascii–ge65];then
echo“UppercaseLetter”
elif[$ascii–ge97–a$ascii–le122];then
echo“LowercaseLetter”
elif[$ascii–ge48–a$ascii–le57];then
echo“Digit”
else
echo“Punctuation,whitespace,orother”
3.2System编程
【问题描述与任务要求】
在tmp目录下调用open()函数,以可读可写的方式创建hello.c文件。
Open函数带有3个flag参数:
O_CREATE、O_TRUNC、O_WRONLY,文件权限设置为0600。
【设计思路】
本题是一道文件IO题目,只需按要求设置好参数即可,并要进行创建失败的判断检测并退出(完整代码见附录)。
需要用到open和clos函数,两个函数说明以及使用如下:
(1)open和close函数说明
open函数是用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。
(2)open和close函数格式
头文件:
#include#include#include
函数原型:
intopen(constchar*pathname,flag,intperms)
函数传入值:
pathname:
被打开的文件名(可包括路径名)
flag:
文件的打开方式,有如下常用:
O_RDONLY:
只读方式打开文件
O_WRONLY:
可写方式打开文件
O_RDWR:
读写方式打开文件
O_CREAT:
如果该文件存在,就创建一个新的文件,并用第三个参数为其设置权限
perms:
被打开文件的存取权限,为8禁止表示法
函数返回值:
成功:
返回文件描述符;失败:
-1
头文件:
#include
函数原型:
intclose(intfd)
函数输入值:
fd:
文件描述符
函数返回值:
成功:
0;出错:
-1
fd=open(”/tmp/hello.c”,O_CRATE|O_TRUNC|O_WRONLY,0600);
close(fd);
【问题描述与任务要求】
打开open函数创建的文件,然后对此文件进行读写操作(将文件打开属性改为可读可写,文件权限要做相应更改)。
接着,写入“Hello!
Iamwritingtothisfile!
”,此时,文件指针位于文件尾部,接着再使用lseek函数将文件指针移动文件开始处,并读出10个字节并将其打印出来。
【设计思路】
本题是接着上一题的文件进行操作,所以重复内容不再赘述,新增文件读写操作(完整代码见附录)。
需要使用到read、write、lseek函数,它们的使用和说明如下:
(1)read、write和lseek函数作用
read函数是用于将指定文件的文件描述符中的数据读出。
当从终端设备文件中读出数据时,通常一次最多读一行;write函数是用于向打开的文件写数据,写操作从文件的当前位移量出开始,若磁盘已满或超出该文件的长度,则write函数返回失败;lseek函数是用于在指定的文件描述符中将文件指针定位到相应的位置。
(2)read、write和lseek函数格式
read函数的语法格式如下:
头文件:
#include
函数原型:
ssize_tread(intfd,void*buf,size_tcount)
函数传入值:
fd:
文件描述符;
buf:
指定存储器读出数据的缓冲区;
count:
指定读出的字节数。
函数返回值:
成功:
读到的字节数;0:
已到达文件尾;-1:
出错
Write函数的语法格式如下:
头文件:
#include
函数原型:
ssize_twrite(intfd,void*buf,size_count)
函数传入值:
fd:
文件描述符;
buf:
指定存储器写入数据的缓冲区;
count:
指定读出的字节数。
函数返回值:
成功“已写的字节数;-1出错。
(3)lseek函数的语法格式如下
头文件:
#include、#include
函数原型:
off_tlseek(intfd,off_toffset,intwhence)
函数传入值:
fd:
文件描述符
offse:
偏移量,每一读写操作所需要移动的距离,单位是字节的数量,可正可负(向前移,向后移)
whence:
当前位置的基点:
SEEK_SET:
当前位置为文件开头;SEEK_CUR:
当前位置为文件指针的位置;SEEK_END:
当前位置为文件的结尾。
函数返回值:
成功:
文件的当前位移;-1出错。
size=write(fd,buf,len);
lseek(fd,0.SEEK_SET);
size=read(fd,buf_r,10);
4编程测试
4.1shell编程测试
输入数据:
2、a、D、.
测试结果如图4-1所示
图4-1
4.2system编程测试
System7
输入数据:
无
测试结果如图4-2所示
图4-2
System5
输入数据:
无
测试结果如图4-3所示
图4-3
5心得体会
通过两周的课程设计,首先学会用虚拟机进行Linux系统,其次大致对Linux有一个系统的了解,能在Linux上进行简单的使用,对Linux中的各个文件的配置文件进行直观的了解。
学会了如何使用gedit和vi文本编辑器进行编程,并利用gcc工具进行调试编译。
从对Linux的零基础到能够在Linux下进行基本的编程。
在进行课程设计题目编程中,既复习了C语言基础,也对shell编程有了初步的理解,拓展了自己是知识面,获得了一定的自学能力。
在此过程中遇到的最大问题就是对于Linux操作系统的不熟悉,一些操作上不习惯和命令太多总是记不清,通过网上搜索解决了我的困惑。
而对于Linux的学习不止于此,并且今后还有操作系统课程,还会继续深入学习。
6参考文献
参考文献
[1]王化成.高级财务管理学[M].北京:
中国人民大学出版社,2003.15-18
[2]巩亦平.中小企业财务管理中存在的问题及对策[J].财会研究,2005,(3):
16-20
[3]周鹏程,姚芳,王冰.桂林旅游产业SWOT分析[J].科技广场,2011,4:
131~134.
[4]杨波,李文勇,郑义恒.基于绿色交通理念的桂林市城市交通规划研究[J].公路与汽运,2014,5:
35~38.
[5]王录录,黄映辉.基于JSP的城市自驾游路线查询系统的设计[J].大连海事大学学报,2007,33(增刊):
195~197.
[6]金妍.车辆导航的智能查询知识库系统研究[D].大连:
大连理工大学,2008.
7附录
Shell9
#!
/bin/bash
while:
doreadchr
if[$?
–eq1];then
break
fi
ascii=`printf"%d\n""'$chr'"`
if[$ascii-le90-a$ascii-ge65];then
echo"UppercaseLetter"
elif[$ascii-ge97-a$ascii-le122];then
echo"LowercaseLetter"
elif[$ascii-ge48-a$ascii-le57];then
echo"Digit"
else
echo"Punctuation,whitespace,orother"
fi
done
system7
#include
#include
#include
#include
#include
#include
intmain(void)
{
intfd;
if((fd=open(“/tmp/hello.c”,O_CREAT|O_TRUNC|O_WRONLY,0600))<0){
perror(“open:
”);
exit
(1);
}
else
printf(“Openfile:
hello.c%d\n”,fd);
if(close(fd)<0){
perror(“close:
”);
exit
(1);
}
else
printf(“closehello.c\n”);
exit(0);
}
System5
#include
#include
#include
#include
#include
#include
#include
intmain(void)
{
inti,fd,size,len;
char*buf=”Hello!
Iamwritingtothisfile!
”;
charbuf_r[10]
len=strlen(buf);
if((fd=open(”/tmp/hello.c”,O_CREAT|O_TRUNC|O_RDWR,0666))<0){
perror(“open:
”);
exit
(1);
}
else
printf(“openfile:
hello.c%d\n”,fd);
if((size=write(fd,buf,len))<0){
perror(“write:
”);
exit
(1);
}
else
printf(“write:
%s\n”,buf);
lseek(fd,0,SEEK_SET);
if((sieze=read(fd,buf_r,10))<0){
perror(“read:
”);
exit
(1);
}
else
printf(“readformfile:
%s\n”,buf_r);
if(close(fd)<0){
perror(“close:
”);
exit
(1);
}
else
printf(“closehello.c\n”);
exit(0);
}