一、实验题目
Linux操作系统下C语言的使用
二、实验课时
2课时。
三、实验目的:熟悉Linux操作系统下c语言的使用。
四、实验内容
学习Linux环境下gcc的使用;
观察进程运行情况和CPU工作情况;
五、实验步骤:
1、屏幕编辑程序Vi的使用
vi是Unix系统中使用最广泛的文件编辑器。
启动vi的方法很简单:直接输入“vi”或直接输入“vi 文件名”命令。
启动vi时,处于命令状态,不能够输入字符,只能输入命令: a:“新增文本”(即Append)命令,执行后将进入输入模式,在当前光标之后新增文本。
I:“插入文本”(即Insert)命令,执行后将进入输入模式,在当前光标位置处新增文本。
d+d:“删除一行”命令。
x:“删除当前字符”命令。
P:“粘贴”命令,将复制的内容粘贴在目前光标所在的位置,若复制内容为整行文字,则会粘贴在光标所在位置的下一行。
:q:“退出vi”命令,不过如果在执行这个命令之前修改过内容,则无法退出。
:q!:“不存盘退出”命令,即是放弃所有的修改,强行退出。
:w:“存盘”命令。
:wq:“存盘退出”命令。
当我们使用“a”或“I”命令进行输入模式后,如果要回到命令模式,只需按一下ESC键即可。
2、Linux环境下的gcc的使用
格式:gcc [选项][要编译的源程序文件名]
当不用任何选项编译一个程序时,gcc将会生成(假定编译成功)一个名为a.out的可执行文件。例如:下面的命令将在当前目录下产生一个叫a.out的文件:
gcc mytest.c
可以用-o编译选项为将产生的可执行文件指定一个文件名来代替a.out,例如,将一个叫mytest.c的C程序编译为名叫mytest的可执行文件:
gcc –o mytest mytest.c
注意,当使用-o选项时,-o后面必须跟一个文件名。
例如:显示“hello,test world”的程序test.c如下:
#include <stdio.h>
int main
{ printf(“hello,test world\n”);
}
在命令行上输入以下命令,编译和运行该程序并观察输出。
gcc –o test test.c
./test(注意:./test表示执行test文件)
为了更好的理解gcc的工作过程,可以把以上的编译过程分为几个步骤进行观察:
(1)gcc –E test.c –o test.i
-E可以使gcc在预处理后停止编译,并生成test.c文件,如果观察test.i文件的内容,会发现stdio.h上的内容和其它被预处理的文件都被包含进来;
(2)gcc –c test.i –o test.o
-c选项将test.i编译为目标代码,由于gcc识别.i为预处理后的c语言文件,因此gcc将自动跳过预处理步骤而开始执行编译过程。
(3)gcc –o testo test.o
把目标代码test.o生成了可执行文件,并用-o指定可执行文件名为testo。
gcc中常用选项及其含义
-c :只预处理、编译和汇编源程序,不进行连接,为每个源程序生成一个目标代码;
-o file :指定输出的文件名为file,当不指定时,默认的文件名是a.out;
-g :在可执行程序中包含标准调试信息,以利于以后的调试工作;
3.观察进程运行情况和CPU工作情况
(1)ps命令:查看系统中现在有那些进程存在,以及这些进程的状态(进程号、程序名、进程状态、父进程号、执行时间、标准输出等)。常用参数:
-A:显示所有进程;
-a:显示本终端上的所有进程,包括其他用户的;
-p:按进程号选择要显示的进程;
-l:长格式显示;
-m:显示线程;
请依次试用以下命令:ps ; ps –l ; ps –a –l ;
(2)pstree命令:显示整个系统的进程树结构,看到父、子进程间的结构关系;常用参数:-a :显示各进程的命令行;
-p :显示各进程的进程号;
-h :对当前进程及其祖先进程高亮度显示;
请试用命令:pstree –a –p –h
4./proc有关文件
/proc文件系统下的目录和文件内容提供诸如进程运行情况、系统资源(CPU、内存、设备、文件等)使用情况等大量系统信息,这些目录和文件都是在用户需要时由系统根据内核信息而实时动态产生的。用户可以通过more、cat等工具来访问和查询这些文件的内容(大多数是纯文本文件)。
与其它获取系统信息的手段(例如ps,pstree等系统命令)相比,/proc方法更具可读性,所提供的信息也丰富和系统的多。实际上,有了/proc以后,像 ps,pstree这些命令都是通过读取/proc中的文件内容来显示结果的。
在/proc下,系统中正在存在的每个进程都有一个对应的子目录/proc/pid,该子目录下的诸文件和下级子目录中,包含该进程的各种运行情况和资源占用情况,例如/proc/709/statm文件中列出了709号进程的内存使用情况。此外,/proc下还有很多与具体进程无关的文件和目录,它们记录着系统运行情况和资源使用情况,例如/proc/devices文件中列出了系统设备情况。
在/proc下与CPU和进程管理有关的文件有:
1、/proc/pid/stat:该文件内容为进程pid的运行情况。Ps命令就是根据该文件显示结果的。
2、/proc/pid/status:该文件内容为进程pid的运行情况。该文件比/proc/pid/stat文件内容少,但可读性好。
3、/proc/cpuinfo:CPU使用情况;
4、/proc/uptime:从系统开始启动到现在所经过的秒数,以及系统空闲的时间。
请试用命令:ls /proc
cat /pro/709/stat
cat /proc/status
cat /proc/cpuinfo
cat /proc/uptime
cat /proc/stat
六、练习:
请利用vi编辑如上名为test.c的源程序文件,并用gcc编译,连接,执行,观察结果,再如上分三步分开编译,用ls查看生成的文件,体会编译过程。
打开 红帽子 系统工具 终端 ,或者 桌面上直接右键点击终端。输入命令vi ,进入vi编辑器中,按a回车进入编辑状态。程序写完后,按esc退出,输入命令:w xxx.c(因为是C语言编写的,注意扩展名)。此时会提示保存成功。再次输入命令:q(退出),在这个时候调用gcc 编译链接程序。输入命令 gcc -o yyy xxx.c(注意 yyy是编译连接之后生成的文件名,和xxx可以不一样,但是最好命名一样便于记住,xxx是相当于类,而yyy则是编译之后的文件名。)有错的话此时会提示。没有错的话就输入运行的命令 ./yyy (注意./和后面的文件名之间没有空格)
再试着编写一个C程序,实现“求100以内的素数”,完成编辑、编译、连接、执行的全过程。
|
|