Linux实验报告 联系客服

发布时间 : 星期五 文章Linux实验报告更新完毕开始阅读

课程编号:B080103040

Linux操作系统 实验报告

姓 名 班 级 实验名称 邵春晓 软工1201 学 号 指 导 教 师 Linux操作系统实验 20124670 石 凯 开 设 学 期 实 验 时 间 2014-2015第一学期 第11周——第18周 评定人签字 评 定 日 期 石 凯 评 定 成 绩 东北大学软件学院

实验一 熟悉Linux环境

【实验内容】

一、练习常用的Shell命令。

当用户登录到字符界面系统或使用终端模拟窗口时,就是在和称为shell的命令解释程序进行通信。当用户在键盘上输入一条命令时,shell程序将对命令进行解释并完成相应的动作。这种动作可能是执行用户的应用程序,或者是调用一个编辑器、GNU/Linux实用程序或其他标准程序,或者是一条错误信息,告诉用户输入了错误的命令。 二、熟悉vim编辑器

在编写文本或计算机程序时,需要创建文件、插入新行、重新排列行、修改内容等,计算机文本编辑器就是用来完成这些工作的。

Vim编辑器的两种操作模式是命令模式和输入模式(如图2所示)。当vim处于命令模式时,可以输入vim命令。例如,可以删除文本并从vim中退出。在输入模式下,vim将把用户所输入的任何内容都当作文本信息,并将它们显示在屏幕上。 三、熟悉gcc编译器

GNU/Linux中通常使用的C编译器是GNU gcc。编译器把源程序编译生成目标代码的任务分为以下4步:

a. 预处理,把预处理命令扫描处理完毕 ;

b. 编译,把预处理后的结果编译成汇编或者目标模块;

c. 汇编,把编译出来的结果汇编成具体CPU上的目标代码模块; d. 连接,把多个目标代码模块连接生成一个大的目标模块; 四、熟悉gdb调试工具

LINUX包含了一个叫gdb的GNU调试程序。gdb是一个用来调试C和C++程序的强有力调试器。它使你能在程序运行时观察程序的内部结构和内存的使用情况。它具有以下一些功能: ·监视程序中变量的值;

·设置断点以使程序在指定的代码行上停止执行; ·一行行的执行代码。

五、掌握Linux下C程序编辑运行过程 Linux下编写C程序要经过以下几个步骤: ⑴启动常用的编辑器,键入C源程序代码。 ⑵编译源程序 ⑶运行可执行文件

【实验总结】

在学习linux的过程中间,最主要的就是耐心和细心。linux的命令很多,只有一遍一遍的看一次又一次的用,才能记住很多的命令,才能很好的使用linux。通过这次实验,我对linux的系统以及vim编辑器,gcc编译器,gdb调试工具更加熟悉,这也让我让我能够更加努力学习。

实验二 文件操作

【实验内容】

1.文件的创建(必做题)

编写程序,实现cp命令的功能。被复制的文件名与复制出的新文件由用户指定。调用方法:“你编写的程序名 被复制文件名 复制出的文件名”。要求程序有一定的健壮性,即对用户错误调用及其他错误要有处理和反馈。(提示:可以使用man手册查看具体的系统调用,e.g., man 2 open)。 #include #include #include #include #include

main(int ac, char *av[]){ int fd1, fd2; int n;

char buf[512];

if(ac!=3){

printf(\ exit(1); }

if((fd1=open(av[1], O_RDONLY))==-1){ perror(\ exit(1); }

if((fd2=creat(av[2], 0777))==-1){ perror(\ exit(1); }

while((n=read(fd1, buf, 512))>0){ write(fd2, buf, n); }

close(fd1); close(fd2); }

2.查看目录内容及文件属性 (1)编写程序,实现ls -l的功能。调用方法:“你编写的程序名”——这时打印出当前目录文件及其属性;“你编写的程序名 目录名”——这时在终端显示给定目录下的文件及其属性。(提示:当用户给定目录后,需要改变进程的当前目录,可使用chdir()。) #include #include #include #include #include #include #include #include #include #include

void mode_to_str(mode_t mode, char *str){ strcpy(str, \

if(S_ISDIR(mode)) str[0]='d';

if(mode & 0400) str[1]='r'; if(mode & 0200) str[2]='w'; if(mode & 0100) str[3]='x';

if(mode & 040) str[4]='r'; if(mode & 020) str[5]='w'; if(mode & 010) str[6]='x';

if(mode & 04) str[7]='r'; if(mode & 02) str[8]='w'; if(mode & 01) str[9]='x'; }

void show_file_info(char * filename){ struct stat buf; char modestr[10]; stat(filename, &buf);