linux系统及应用(应用开发)实验报告册

  • 格式:docx
  • 大小:19.42 KB
  • 文档页数:13

合肥师范学院实验报告册2013-2014 第二学期系另H 计算机科学与技术实验课程linux 系统及应用专业11级计算机科学与技术班级嵌入式应用技术姓名________________________ 学号________________________ 指导教师何冀军实验项目一览表实验一Linux 系统安装和简单配置一、实验目的(1) 掌握Linux 操作系统的安装步骤;(2) 掌握Linux 系统的简单配置方法;(3) 掌握Linux 系统的启动、关闭步骤。

二、实验内容(1) 安装Linux 系统;(2) 配置Linux 系统运行环境;(3) 正确地启动、关闭系统。

三、实验软件VMWare Workstation 5.0 ;Red hat linux 9.0 镜像文件;四、实验主要步骤(1) 配置并安装操作系统;(2) vi创建程序并实用GCG编译;(3) 运行程序;五、实验结果实验项目二Linux 基本命令的使用一、实验目的1) 掌握Linux 一般命令格式;2) 掌握有关文件和目录操作的常用命令;3) 掌握有关进程操作的常用命令;(4 )熟练使用ma n命令。

二、实验内容(1)正确地登陆和退出系统;(2)熟悉date ,cal ,who,echo ,clear ,passwd 命令;(3)在用户主目录下对文件进行如下操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等;(4)对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等;(5)利用man显示date , echo等命令的手册页;( 6)显示系统中的进程信息。

三、实验软件VMWare Workstation 5.0 ;Red hat linux 9.0 ;四、实验主要步骤1、登录进入系统,修改个人密码。

2、使用简单命令:date,cal,who,echo,clear 等,了解linux 命令格式;3、浏览文件系统:( 1 )运行pwd 命令,确定当前工作目录;(2)运行Is - I命令,理解各字段含义;(3)运行Is - ai命令,理解各字段含义。

( 4)使用cd 命令,将工作目录改到根目录( / )上。

(5)直接使用cd,用pwd命令验证回到的位置。

( 6)用mkdir 建立一个子目录subdir;(7)将工作目录改到subdir.4、文件操作( 1)验证当前工作目录在subdir;( 2)运行date >fiIe1, 然后运行cat fiIe1, 看到什么信息?( 3)运行cat subdir, 会有什么结果,为什么?(4)利用man 命令显示date 命令的使用说明;( 5)运行man date>>fiIe1, 看到什么?运行cat fiIe1, 看到什么?(6)利用Is - I filel, 了解链接计数是多少?运行In file1 ../fa, 再运行Is - I file1, 看链接计数有无变化?用cat命令显示fa 文件内容。

( 7)显示file1 的前10 行,后10 行。

(8)运行cp filel file2, 然后Is - l,看到什么?运行mv file2 file3, 然后Is - I看到什么?运行cat f*, 结果怎样?(9)运行rm file3, 然后Is - I,结果如何?( 10)在/etc/passwd 文件中查找适合你注册名的行.(11)运行Is - I,理解各文件的权限是什么?( 12 )用两种方式改变file1 的权限。

(13)统计fiIe1 文件的行数、字数。

( 14)运行man Is|more, 显示结果是什么?运行cat fiIe1|head -20|tee fiIe5 , 结果如何?运行cat fiIe5|wc, 结果如何?五、实验结果实验项目三vi 编辑器一.实验目的学习使用vi 编辑器建立、编辑、显示及加工处理文本文件。

二.实验内容(1)进入和退出vi ;(2)利用文本插入方式建立一个文件;(3)在新建的文本文件上移动光标位置;(4)对该文件执行删除、复原、修改、替换等操作。

三.实验软件VMWare Workstation 5.0 ;Red hat linux 9.0 ;四.实验主要步骤1、进入vi;2、建立一个文件,如file.c. 进入插入方式,输入一个C 语言程序的各行内容,故意制造几处错误。

最后将该文件存盘。

回到shell 状态下。

3、运行gcc file.c - o myfile,编译该文件,会发现错误提示。

理解其含义。

4、重新进入vi ,对该文件进行修改。

然后存盘,退出vi 。

重新编译该文件。

如果编译通过了,可以用./myfile 运行该程序。

5、运行man date > file10, 然后vi file10.使用x,dd 等命令删除某些文本行。

使用u 命令复原此前的情况。

使用c,r,s 等命令修改文本内容。

使用检索命令进行给定模式的检索。

五.实验结果实验项目四shell 编程一、实验目的(1)了解shell的作用和主要分类;(2)掌握bash的建立和执行方式;(3)掌握bash的基本语法;(4)学会编写shell脚本。

二、实验内容(1)shell脚本的建立和执行;(2 )历史命令和别名定义;(3)shell变量和位置参数、环境变量;(4)bash的特殊字符;(5 )一般控制结构;(6)算术运算及bash函数。

三•实验软件VMWare Workstatio n 5.0 ;Red hat li nux 9.0 ;四.实验主要步骤1、利用vi建立一个脚本文件,其中包括date,cal,pwd,ls 等常用命令。

然后以不同方式执行脚本。

2、运行history 命令,配置历史命令环境。

3、体会bash的命令补齐功能。

4、用alias定义别名,然后执行。

5、编辑如下脚本进行执行:6、编写一个shell脚本,求斐波那契数列的前10项及总和。

7、设计一个程序cuts,它由标准输入读取数据,获取由第一个参数n和第二个参数m 所限定范围的数据,n和m都是整数,即从输入的字符串中抽取第n个字符至第m个字符之间的所有字符(包括这两个字符)。

例如:$cuts 11 14tis is a test of cuts program (输入)tst(显示结果五.实验结果实验项目五常用开发工具一.实验目的(1)掌握 C 语言编译的基本用法;(2)掌握gdb 调试工具的基本用法;(3)理解make 工具的功能,学会编制makefile 的方法。

二.实验内容(1)利用gcc 编译 C 语言程序,使用不同选项,观察并分析显示结果;(2)用gdb 调试一个编译后的 C 语言程序;(3)编写一个由多个文件构成的C语言程序,编制makefile,运行make工具进行维护。

三.实验软件VMWare Workstation 5.0 ;Red hat linux 9.0 ;四.实验主要步骤1、改写例6.1 ,使用下列选项对它进行编译:-I,-D,-E,-c,-o,-l 。

2、完成对思考题6.5 、6.6 的调试。

3、完成对思考题6.9的编制,并使用make进行维护。

五.实验结果实验项目六Linux 内存管理一、实验目的(1)了解Linux内存管理的基本原理和方法;( 2)了解内存申请和释放的方式;( 3)掌握malloc ,realloc ,free ,calloc 函数的使用。

二、实验内容(1)使用C语言编写一个包含内存分配与释放的程序,观察分析并显示运行结果;(2)通过gdb等工具对程序进行调试;(3)在程序运行过程中观察系统内存的使用情况,验证内存管理函数的执行效果。

三.实验软件VMWare Workstation 5.0 ;Red hat linux 9.0 ;四.实验主要步骤(1) 内存库函数实验-malloc 函数,运行程序清单6-1 ,写明运行结果。

(2) 内存库函数实验-calloc 函数,运行程序清单6-2,写明运行结果。

( 3)内存库函数实验-realloc 函数, 运行程序清单6-3,写明运行结果。

( 4)内存错误分析实验:指出程序清单6-4的内存错误原因。

指出程序清单6-5的内存错误原因。

通过比较程序清单6-6 、6-7输出结果,分析程序6-3内存错误原因。

五.实验结果程序清单:(1)5-1 #include <syslib.h>#include <alloc.h> main(){ char *p; clrscr();// clear screen p=(char *)malloc(100); if(p) printf("Memory Allocated at: %x",p); elseprintf("Not Enough Memory!\n"); free(p);return 0;}(2)5-2#include <syslib.h>#include <alloc.h> main(){ char *p; clrscr();// clear screenp=(char *)calloc(100,sizeof(char)); if(p)printf("Memory Allocated at: %x",p); elseprintf("Not Enough Memory!\n"); free(p);return 0;}(3) 5-3#include <syslib.h>#include <alloc.h> main(){ char *p; clrscr();// clear screen p=(char *)malloc(100); if(p) printf("Memory Allocated at: %x",p);elseprintf("Not Enough Memory!\n");p=(char *)realloc(p,256);if(p)printf("Memory Reallocated at: %x",p); elseprintf("Not Enough Memory!\n"); free(p);return 0; }(4) 5-4VoidApplyForMem(char *p,int num){ p=(char*)malloc(sizeof(char)*num); return;}intmain(){char *str=NULL;ApplyForMem(str,300);free(str); infile.close();return 0;}(5) 5-5#include <unistd.h>#include <stdlib.h>#include <stdio.h>int main() {char z = *(const char *)0; exit(EXIT_SUCCESS);}(6) 5-6#include “stdlib.h ”#define HEAP_BLOCK_SIZE 32int main(){// 分配申明heap 内存块1char *pbuf1 = (char *) malloc(HEAP_BLOCK_SIZE);printf("HeapTest block 1 (%d bytes) at %08Xh", sizeof(pbuf1), pbuf1);*pbuf1 = '1';// 分配申明heap 内存块2char *pbuf2 = (char *) malloc(HEAP_BLOCK_SIZE);printf("HeapTest block 2 (%d bytes) at %08Xh", sizeof(pbuf2), pbuf2);*pbuf2 = '2';// 分配申明heap 内存块3char *pbuf3 = (char *) malloc(HEAP_BLOCK_SIZE);printf("HeapTest block 3 (%d bytes) at %08Xh", sizeof(pbuf3), pbuf3);*pbuf3 = '3';// 释放heap 内存块1printf("HeapTest block 1 (%d bytes) at %08Xhfreed",sizeof(pbuf1), pbuf1); free(pbuf1);// 释放heap 内存块2printf("HeapTest block 2 (%d bytes) at %08Xhfreed",sizeof(pbuf2), pbuf2); free(pbuf2);// 释放heap 内存块3printf("HeapTest block 3 (%d bytes) at %08Xhfreed",sizeof(pbuf3), pbuf3); free(pbuf3);// 分配申明heap 内存块4char *pbuf4 = (char *) malloc( HEAP_BLOCK_SIZE);printf("HeapTest block 4 (%d bytes) at %08Xh", sizeof(pbuf4), pbuf4);*pbuf4 = '4';// 分配申明heap 内存块5char *pbuf5 = (char *) malloc( HEAP_BLOCK_SIZE);printf("HeapTest block 5 (%d bytes) at %08Xh", sizeof(pbuf5), pbuf5);*pbuf5 = '5';// 分配申明heap 内存块6char *pbuf6 = (char *) malloc( HEAP_BLOCK_SIZE);printf("HeapTest block 6 (%d bytes) at %08Xh", sizeof(pbuf6), pbuf6);*pbuf6= '6';for(;;) { Sleep(1000);}return 0;}(7) 5-7#include “stdlib.h ”#define HEAP_BLOCK_SIZE 32int main(){// 分配申明heap 内存块1char *pbuf1 = (char *) malloc(HEAP_BLOCK_SIZE);printf("HeapTest block 1 (%d bytes) at %08Xh", sizeof(pbuf1), pbuf1);*pbuf1 = '1';// 分配申明heap 内存块2char *pbuf2 = (char *) malloc(HEAP_BLOCK_SIZE);printf("HeapTest block 2 (%d bytes) at %08Xh", sizeof(pbuf2), pbuf2);*pbuf2 = '2';// 分配申明heap 内存块3char *pbuf3 = (char *) malloc(HEAP_BLOCK_SIZE);printf("HeapTest block 3 (%d bytes) at %08Xh", sizeof(pbuf3), pbuf3);*pbuf3 = '3';// 释放heap 内存块3printf("HeapTest block 3 (%d bytes) at %08Xhfreed",sizeof(pbuf3), pbuf3); free(pbuf3);// 释放heap 内存块2printf("HeapTest block 2 (%d bytes) at %08Xhfreed",sizeof(pbuf2), pbuf2); free(pbuf2);// 释放heap 内存块1printf("HeapTest block 1 (%d bytes) at %08Xhfreed",sizeof(pbuf1), pbuf1); free(pbuf1);// 分配申明heap 内存块4char *pbuf4 = (char *) malloc( HEAP_BLOCK_SIZE);printf("HeapTest block 4 (%d bytes) at %08Xh", sizeof(pbuf4), pbuf4);*pbuf4 = '4';// 分配申明heap 内存块5char *pbuf5 = (char *) malloc( HEAP_BLOCK_SIZE);printf("HeapTest block 5 (%d bytes) at %08Xh", sizeof(pbuf5), pbuf5);*pbuf5 = '5';// 分配申明heap 内存块6char *pbuf6 = (char *) malloc( HEAP_BLOCK_SIZE); printf("HeapTest block 6 (%d bytes) at %08Xh", sizeof(pbuf6), pbuf6);*pbuf6= '6'; for(;;) { Sleep(1000);}return 0;}实验项目六Linux 环境编程一. 实验目的(1)理解系统调用和库函数的异同;(2)学会用系统调用和库函数进行编程;(3)掌握一些常用的系统调用和库函数的功能及应用。