Linux程序实验.docx
- 文档编号:18445852
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:40
- 大小:66.49KB
Linux程序实验.docx
《Linux程序实验.docx》由会员分享,可在线阅读,更多相关《Linux程序实验.docx(40页珍藏版)》请在冰点文库上搜索。
Linux程序实验
《Linux程序设计》教学大纲
LinuxProgramDesign
课程类别:
学科专业教育课程课程名称:
Linux程序设计
开课单位:
软件学院课程编号:
N03140112
总学时:
32学分:
2
适用专业:
软件工程
先修课程:
程序设计基础
一、课程在教学计划中的地位、作用
通过讲授Linux的操作使用、系统结构和Linux环境下的程序设计,使学生对Linux操作系统获得一个全面的认识和掌握。
一方面,学生通过学习系统程序设计,能够复习操作系统中的基本概念,对文件管理、进程控制有更深入的理解;另一方面,学生学会在Linux环境下工作,进一步熟悉C语言程序设计和数据结构的知识,编写进行系统维护的脚本文件和实用化的大型应用程序,如网络应用程序。
同时,本课程为学生进一步学习其它后续课程(如高级操作系统、Linux内核源代码分析、嵌入式系统等)打下基础。
二、课程内容、基本要求
第一章linux基础
1、了解什么是Linux,UNIX和Linux的历史,Linux/UNIX的系统结构;
2、掌握Linux的基本命令和操作使用,Linux程序设计的预备知识。
第二章Shell程序设计
1、了解什么是shell;
2、掌握创建和执行Shell脚本,Shell程序设计的语法。
第三章Linux系统程序设计
(一)文件操作与文件管理
1、掌握Linux文件系统的实现,系统调用和标准I/O库,文件属性目录的实现和操作,系统数据文件,文件锁,高级I/O。
第四章Linux下简单的C程序设计
1、掌握GCC的使方法
2、掌握在linux下编写基本C程序。
第五章Linux系统程序设计
(二):
进程控制和进程间通信
1、了解进程的概念;
2、掌握Linux中的进程和进程环境,进程控制,进程间的关系,信号,daemon进程,进程间通信,线程。
第六章Linux网络程序设计
1、了解TCP/IP基础知识,什么是socket,socket编程,远程过程调用。
2、掌握Linux平台数据结构的传送方法。
三、实验
实验一Linux基本命令的使用
1、学会并掌握linux的基本命令
实验二Shell程序设计
1、Shell程序设计中变量的使用;
2、理解通道的概念并初步掌握它的使用方法;
3、掌握算术操作、字符串操作、逻辑操作、文件操作;
4、掌握ifthenfi、iftheneliffi、case、while、for等控制语句;
5、在shell脚本中使用函数
实验三文件操作与文件管理
1、熟悉Linux下常用的操作指令。
2、加深对文件,目录,文件系统等概念的理解。
3、掌握Linux文件系统的目录结构。
4、掌握有关Linux文件系统操作的常用命令。
5、了解有关文件安全方面的知识。
实验四Linux下简单的C程序设计
1、了解并掌握GCC等Linux的开发调试环境。
2、掌握使用标准C的文件操作函数和Linux的系统调用。
实验五进程控制和进程间通信
1、理解和掌握UNIX和Linux进程通信系统调用的功能
实验六网络程序设计
1、理解Socket概念;?
2、理解并掌握Socket模型下获得本机IP信息的方法;?
3、理解并发服务器模型,掌握通用套接字开发技术;?
4、掌握Linux平台数据结构的传送方法。
四、学时分配
章节名称
讲授(学时)
实验(学时)
小计
第一章linux基础
3
2
5
第二章Shell程序设计
2
2
4
第三章Linux系统程序设计
(一)文件操作与文件管理
2
2
4
第四章Linux下简单的C程序设计
4
2
6
第五章Linux系统程序设计
(二):
进程控制和进程间通信
4
2
6
第六章Linux网络程序设计
5
2
7
共计
20
12
32
五、主要参考书
《Linux环境C程序设计》、《linux简明教程》、《linux基础教程》
六、考核方式(包括作业、测验、考试等及其所占比例)
考试:
60%实验:
30%平时:
10%
《Linux程序设计》实验大纲
LinuxProgramDesign
课程类别:
学科专业教育课程课程名称:
Linux程序设计
开课单位:
软件学院课程编号:
N03140112
总学时:
32学分:
2
适用专业:
软件工程
先修课程:
程序设计基础
一、实验教学目标
熟练掌握shell编程、熟练使用linux系统、掌握进程控制和进程间通信,学会编写网络程序,学会在linux环境中编写web程序。
养成一种良好的程序设计风格。
二、实验环境
Linux
三、实验教材及参考书:
[1]实验指导书(自编讲义)
[2]《Linux环境C程序设计》徐诚高莹婷等清华大学出版社2010.1
[3]《linux入门到精通》刘忆智清华大学出版社2010.1
四、实验成绩评定方式
根据学生在实验过程中的认真程度、上机结果验收情况以及实验报告撰写质量,进行综合评定。
五、实验项目及学时分配
序号
实验名称
实验类别
学时数
备注
1
Linux基本命令的使用
验证型
2
2
Shell程序设计
设计型
2
3
文件操作与文件管理
验证型
2
4
Linux下简单C程序设计
验证型
2
5
进程控制和进程间通信
设计型
2
6
网络程序设计
验证型
2
六、实验内容及要求
实验一Linux基本命令的使用
1、实验目的
(1)学习和掌握Linux的基本命令
(2)增强学生对Linux的学习兴趣
2、实验内容
(1)linux的登录操作
(2)常用基本命令的使用
实验二Shell程序设计
1、实验目的
(1).Shell程序设计中变量的使用;?
(2).理解通道的概念并初步掌握它的使用方法;?
(3).掌握算术操作、字符串操作、逻辑操作、文件操作;?
(4).掌握if?
then?
fi、if?
then?
elif?
fi、case、while、for等控制语句;
(5).在shell脚本中使用函数;
2、实验内容
(1).通过对shell程序的调试,理解变量$#,$0,$1,$2,$3,$@的含义;?
(2).Shell顺序程序设计;?
(3).Shell分支程序与多分支程序设计;?
(4).Shell循环程序设计。
实验三文件操作与文件管理
1、实验目的
(1).熟悉Linux下常用的操作指令。
(2).加深对文件,目录,文件系统等概念的理解。
(3).掌握Linux文件系统的目录结构。
(4).掌握有关Linux文件系统操作的常用命令。
(5).了解有关文件安全方面的知识。
2、实验内容
Linux文件系统操作的常用命令。
实验四Linux下简单C程序设计
1、实验目的
(1)学习和掌握gcc等Linux的开发调试环境。
?
(2)学会在Linux下编写C程序。
2、实验内容
(1)学习GCC编译程序
(2)学习并分别使用标准C的文件操作函数和Linux的系统调用创建一个对学生基本信息进行操作(插入、修改和删除)的C程序。
实验五进程控制和进程间通信
1、实验目的
为了理解和掌握UNIX和Linux进程通信系统调用的功能,这里给出了进程通信实现机制中使用的系统调用命令的格式和如何利用系统调用命令进行进程通信编程,以便通过学习,提高学生对进程通信系统调用的编程能力。
2、实验内容
编写一个有名管道程序。
一个(客户)进程从键盘循环读一系列字符,将这些字符和发送者的pid发给服务器进程,让其统计输入的是字符还是数字,分别为多少个,完成后再向客户进程发回服务的结果,由客户进程输出。
实验六网络程序设计
1、实验目的
(1).理解Socket概念;?
(2).理解并掌握Socket模型下获得本机IP信息的方法;?
(3).理解并发服务器模型,掌握通用套接字开发技术;?
(4).掌握Linux平台数据结构的传送方法。
2、实验内容
(1).编写获得本机IP信息的程序;
(2).编写基于并发服务器模式的网络通信原型系统;
(3).要求至少综合使用到实验目的中提到的三条或三条以上内容。
《Linux程序设计》实验指导书
实验类别:
课内实验实验课程名称:
Linux程序设计
实验室名称:
软件工程专业实验室实验课程编号:
N03140112
总学时:
32学分:
2
适用专业:
软件工程
先修课程:
Linux操作系统、C程序设计
实验在教学培养计划中地位、作用:
通过讲授Linux的操作使用、系统结构和Linux环境下的程序设计,使学生对Linux操作系统获得一个全面的认识和掌握。
一方面,学生通过学习系统程序设计,能够复习操作系统中的基本概念,对文件管理、进程控制有更深入的理解;另一方面,学生学会在Linux环境下工作,进一步熟悉C语言程序设计和数据结构的知识,编写进行系统维护的脚本文件和实用化的大型应用程序,如网络应用程序。
同时,本课程为学生进一步学习其它后续课程(如高级操作系统、Linux内核源代码分析、嵌入式系统等)打下基础。
实验一Linux基本命令的使用
1、实验目的
(1)学习和掌握Linux的基本命令
(2)增强学生对Linux的学习兴趣
2、实验内容
(1)linux的登录操作
(2)常用基本命令的使用
3、实验要求
(1)实验前认真预习实验内容,详细了解本实验所涉及到的相关理论知识。
(2)填写完整的实验报告。
4、实验步骤
步骤1:
以user_login用户身份并使用telnet登录Linux服务器,按照提示创建自己的账户和口令。
步骤2:
使用新创建的用户账户和口令登录Linux系统,察看登录后的界面。
步骤3:
使用pwd命令察看当前的工作目录,然后用ls命令查看当前目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。
步骤4:
在当前目录下建立一个名为test的新目录,然后将工作目录切换到test下,尝试将/etc目录下的文件passwd拷贝到该目录下(cp源文件目的目录)。
察看当前目录下的passwd文件的属主和文件权限。
步骤5:
尝试向当前目录下的passwd文件和/etc/passwd文件分别写入一些新内容(可使用echo“字符串”>>文件的命令),看看操作能否成功,如果不能成功,请说明原因。
用cat命令浏览文件password的内容,用more命令进行浏览翻页操作,再用less命令浏览文件的内容。
比较这几个命令的不同之处。
步骤6:
用ls命令查看test下文件的权限,用mv命令更改文件password的文件名为test.txt,尝试用chown和chgrp更改文件的属主为root、组为root,看看能否成功,不成功,请说明原因。
尝试用chomd将文件权限为“-rw-------”。
看看能否成功,不成功,请说明原因。
步骤7:
用rm命令删除test目录下的所有文件,再用rmdir命令删除test目录。
(想一想有没有一条命令将目录及目录下的所有文件删除,写出这条命令)
步骤8:
使用ps命令查看当前系统内的进程,并利用man命令获取ps命令的参数,写出获取当前终端进程执行情况的ps命令。
步骤9:
使用df命令查看当前系统已安装的文件系统的空间使用情况,记录结果。
步骤10:
使用du命令查看用户的工作目录占用了多少空间,记录结果。
步骤11:
使用free命令查看内存资源的使用情况,记录结果。
实验二Shell程序设计
1、实验目的
(1).Shell程序设计中变量的使用;
(2).理解通道的概念并初步掌握它的使用方法;
(3).掌握算术操作、字符串操作、逻辑操作、文件操作;
(4).掌握ifthenfi、iftheneliffi、case、while、for等控制语句;
(5).在shell脚本中使用函数;
2、实验内容
(1).通过对shell程序的调试,理解变量$#,$0,$1,$2,$3,$@的含义;
(2).Shell顺序程序设计;
(3).Shell分支程序与多分支程序设计;
(4).Shell循环程序设计。
3、实验要求
(1)实验前认真预习实验内容,详细了解本实验所涉及到的相关理论知识。
(2)填写完整的实验报告。
4、实验步骤
1vi的使用
步骤1:
以root用户身份登录进入Linux?
系统。
步骤2:
启动Vi,切换到输入模式,输入一段英文:
This?
ia?
an?
exercise!
?
?
We?
use?
Vi?
to?
edit?
it.?
Left,down,up,right?
步骤3:
尝试匹配其中的一串字符,写出这命令及执行结果。
/use
步骤4:
尝试替换其中的一串字符,写出这命令及执行结果。
:
s/This/aaaThis/g
步骤5:
尝试复制/删除其中的一行或几行文本,写出命令及执行结果。
Yy2p
dd
步骤6:
尝试复制/删除其中的一个单词或几个字符,写出命令及执行结果。
3ywp
dw
x
步骤7:
尝试使用鼠标复制文本,写出命令及执行结果。
输入模式下:
复制粘贴
步骤8:
尝试存盘退出操作,写出命令。
:
wqnewname
ls
可以用的命令:
wq或:
x
2.2简单的shell程序
步骤1:
使用Vi将程序清单2-1的程序输入。
步骤2:
尝试运行该程序,如果不能运行,原因是什么,怎样修改。
步骤3:
执行程序,写出程序的执行结果。
步骤4:
阅读程序,掌握shell函数的编写方法,补全函数file_run。
foriin`ls`
do
iftest-x$i;then
echo$i
fi
done
步骤5:
修改程序中的函数uers(),使得显示在线用户时不分行。
(提示:
可以使用循环,对每个在线用户分别处理。
echo"thereare`who|wc-l`usersonline"
foriin"whoare\n`who|awk'{print$1}'`"
do
echo-n$i
echo-n""
done
程序清单
清单2-1menu
#!
/bin/bash
MYDATE=`date+%d/%m/%y`
THIS_HOST=`hostname-s`
USER=`whoami`
file_run()
{
#!
/bin/bash
foriin`ls`
do
iftest-x$i;then
echo$i
fi
done
}
uers()
{
#!
/bin/bash
echo"thereare`who|wc-l`usersonline"
echo-e"whoare\n`who|awk'{print$1}'`"
}
while:
do
tputclear
cat< --------------------------------------------------------------------- User: $USERHost: $THIS_HOSTDate: $MYDATE --------------------------------------------------------------------- 1: Listsubdirectoryincurrentdirectory 2: Listfilesincurrentdirectorywhichcanrun 3: Seewhoisonthesystem H: Helpscreen Q: ExitMenu -------------------------------------------------------------------- aaa echo-e-n"\tYourChoice[1,2,3,H,Q]>" readCHOICE case$CHOICEin 1)ls-l|awk'/^d/{print$8}' ;; 2)file_run ;; 3)uers ;; H|h) cat< Thisisthehelpscreen,nothinghereyettohelpyou! aaa ;; Q|q)exit0 ;; *)echo-e"\t\007unkownuserresponse" ;; esac echo-e-n"\n\n\tHitthereturnkeytocontinue" readDUMMY done 实验三文件操作与文件管理 1、实验目的 (1).熟悉Linux下常用的操作指令。 (2).加深对文件,目录,文件系统等概念的理解。 (3).掌握Linux文件系统的目录结构。 (4).掌握有关Linux文件系统操作的常用命令。 (5).了解有关文件安全方面的知识。 (2) 2、实验内容 Linux文件系统操作的常用命令。 3、实验要求 (1)实验前认真预习实验内容,详细了解本实验所涉及到的相关理论知识。 (2)填写完整的实验报告。 4、实验步骤 1.浏览文件系统 〈1〉运行pwd命令,确定你当前的工作目录。 〈2〉利用以下命令显示当前工作目录的内容: (理解各字段彻底意义。 ) 〈3〉运行以下命令: (反馈信息中.代表本身目录,..代表其父目录;选项a可以显示隐藏文件;选项i可以显示文件的I节点号) ls–ai 〈4〉使用mkdir命令建立一个子目录subdir,并用ls查看当前目录。 〈5〉使用带-d选项的ls命令,你只能看到有关子目录的信息(.表示本身目录)。 〈6〉使用cd命令,将工作目录改到根目录(/)上。 1用相对路径将工作目录改到根目录。 2用绝对路径将工作目录改到根目录。 〈7〉使用ls命令列出根目录的内容,再分别列出各子目录的内容,体会各目录作用及访问权限。 〈8〉使用ls-l命令列出/dev的内容。 Ls–l/dev列出/dev目录的内容,文件太多显示多屏,各行第一个字符为b的表示块特别文件;各行第一个字符为c的表示字符特别文件。 〈9〉使用不带参数的命令cd,然后用pwd命令确定你当前的工作目录是什麽。 〈10〉使用命令cd../..,你将工作目录移到什麽地方? 2.查看你的文件 〈1〉利用cd命令,将工作目录改到你的主目录上。 〈2〉将工作目录改到你的子目录subdir,然后运行命令: date>file1将当前日期和时间存放到新建文件file1中。 Ls–l反馈信息中有新文件file1。 请注意并记下文件长度为: 〈3〉使用cat命令查看file1文件的内容。 〈4〉利用man命令显示date命令的用法(说明文件): 〈5〉将date命令的用法(说明文件内容)附加到文件file1的后面: 注意file1文件长度为,较前变长。 〈6〉利用ls-lfile1命令列出文件file1的较详细的信息。 ls-lfile1注意第二字段(链接记数)的值为“1”。 〈7〉利用lnfile1../fa命令进行文件链接。 然后运行ls-lfile1,查看显示的第二段的值发生了什麽变化。 〈8〉现在想利用catfa命令显示文件fa的内容,应该如何改动工作目录? 〈9〉利用cpfile1fa命令生成文件file1的副本。 然后利用ls-l命令查看工作目录的内容。 〈10〉将文件fa删除。 再利用ls-l命令查看工作目录内容。 〈11〉运行mvfile1file_a命令,然后用ls命令查看这两个文件是否都还在工作目录中? 3.文件存取权限 〈1〉存取权限 LINUX系统对所有文件设置了存取权限。 存取权限让你确定谁可以对你的个人文件和目录行访问,以及可以进行什麽操作。 把所有用户分为三类: ——文件主(user),即文件的属主。 ——组用户(group),即文件组的成员。 ——其他用户(other),即能对系统进行访问的所有其他用户。 对一个文件的存取权限分为三种: ——读(r) ——写(w) ——执行(x) 一组存取权限以及相应的文件类型统称为文件模式。 如: rw-r--r--表示文件主有读和写的权限,组用户和其他用户只有读权限。 〈2〉文件存取权限 读权限(r)允许指定的用户可以打开文件并阅读其内容。 如cat,more,file和cp命令等。 写权限(w)允许指定的用户可以打开文件并修改其内容。 如vi,mail,cp等。 执行权限(x)允许指定的用户运行(即执行)一个二进制文件文件或者把一个shell脚文件当做命令来运行。 当你通过输入命令名来调用命令时,你必须具有该命令文件的执行限。 〈3〉目录存取权限 读权限(r)允许你列出相应目录中所存放的文件的名字(即目录的内容表)。 写权限(w)允许你从目录中删除已有文件或者把新文件添加到目录中。 查询权限(x)允许你在目录中进行查找和使用cd命令把工作目录放到它这里。 〈4〉修改文件权限 文件主或root用户可以使用chmod命令来修改文件或目录的权限。 修改文件权限的方式有两种: 符号模式和绝对模式。 这里主要介绍符号模式。 使用chmod命令修改当前权限设置的 一般形式是: chmodkeyfile[file...] 其中,key由以下成分组成: [who][+|-|=][mode] ——who这一部分可以由下面的一个和多个字符组成: u,g,o或a,它们分别表示文件主,组用户,其他用户或所有三种用户。 默认值是a。 ——第二部分必须是以下三个字符中的一个: +,-,或者=,分别表示增加,删除或者设定。 ——mode成分可以由以下字符任意组合: r,w或x,分别表示读,写或者执行/查询的权限。 以上三个部分必须依次输入,而且它们之间没有空格。 在一个命令行中可以指定多个key,彼此间用逗号隔开,中间没有空格。 如: 设文件f原来的权限是rw-rw-r--,现在想让所有用户都具有执行权限,则可使用以下命令: chmoda+xf,该命令执行后,文件f的权限变成rwxrwxr-x。 练习: mvfile_afile1恢复文件file1; ls–l显示文件file1的权限为rw-rw-r—; 1).取消同组用户g和其他用户o对文件可读的权利; 2).显示文件file1的权限。 3).恢复同组用户g和其他用户o对文件可读的权利; 4配额管理 〈1〉利用fdisk创建一个分区 〈2〉格式化为ext3文件系统 〈3〉将该分区设置为自动挂载为/home . 〈4〉创建两个用户hellen和jerry,组群为student 〈4〉对/home文件系统实施用户级和组群级的配额管理,普通用户helen和jerry的软配额为150MB,硬配额为200MB,student组群的软配额为800MB,硬配额为900MB0 实验四Linux下简单C程序设计 1、实验目的 (1)学习和掌握gcc等Linux的开发调试环境。 ? (2)学会在Linux下编写C程序。 2、实验内容
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 程序 实验