欢迎来到天天文库
浏览记录
ID:41033289
大小:45.00 KB
页数:3页
时间:2019-08-14
《附2 Linux环境编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、附:Linux环境编程[实验目的](1)理解系统调用和库函数的使用方法和格式;(2)掌握进程控制相关的系统调用函数的原理、语法和编程应用;(3)掌握Linux的C编译器GCC的使用方法。[实验预备知识](1)系统调用和库函数操作系统对外提供的服务可以通过不同的方式实现,其中两种基本的服务方式就是系统调用和库函数。系统调用是操作系统提供的、与用户程序之间的接口,它一般位于操作系统核心的最高层。当CPU执行到用户程序中的系统调用(如使用read()从文件中读取数据)时,处理机的状态就从用户态变为核心态,从而进入操作系统内部,执行它的有关代码,实现操作系统
2、的对外服务。当系统调用完成后,控制返回到用户程序。库函数现代计算机系统中,都有函数库,其中含有系统提供的大量程序。它们解决带共性的问题,并为程序的开发和执行提供更方便的环境。如C程序中常用的fopen()就是标准I/O库中的库函数。尽管它们很重要、也很有用,但它们本身并不属于操作系统的内核部分。一些库函数只是简化了用户与系统调用的接口。库函数要获得操作系统的服务也要通过系统调用这个接口。(2)文本编辑器Gedit的使用方法与Windows的记事本操作类同。(3)C编译器GCC的使用参见[实验提示]。[实验提示]一、Linux中的C语言编译器GCC的使
3、用简介Linux如同所有的UNIX系统一样是用C语言编写的。目前Linux下最常用的C语言编译器是GCC(GNUCompilerCollection),它是GNU项目中符合ANSIC标准的编译系统,是一种功能强大、性能优越的多平台编译器,能够编译用C、C++和ObjectC等语言编写的程序。借助GCC,由C源代码文件生成可执行文件的过程有4步,分别是与处理、编译、汇编和链接。不同的阶段分别调用不同的工具进行处理。(1)预处理GCC调用预处理器cpp将预处理指令如#include、#define等所包含的文件内容插入程序代码中。(2)编译GCC调用编译
4、器将预处理后的文件进行编译,生成一个汇编语言的文件。(3)汇编GCC调用汇编器as处理汇编文件,并生成一个以.o为扩展名的目标文件。(4)链接GCC调用链接器ld将程序中所用到的函数库连同目标文件链接,产生一个可执行文件。RedHatLinux9中已安装有3.2.2版本的GCC,安装的目录结构如下:/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/:GCC编译器所在目录。/usr/bin/gcc:命令行执行编译的二进制程序所在位置。/usr/include/:库和C语言加载的头文件所在目录。/usr/:系统的库函数所在
5、目录。/usr/lib/:程序和子系统的函数库所在目录。31、使用GCCGCC基本用法是在Linux命令行下使用如下格式的命令:gcc[选项]源文件[目标文件]其中选项是参数,用来指定对其后给出的文件所执行的操作方式。当不用任何选项执行编译操作时,若编译成功,GCC将建立一个名为a.out的可执行文件。例:用任一文本编辑器(如vi、emacs、nedit等)创建名为test.c的文件,$gedittest.c在文件中输入以下内容。#includemain(void){printf(“Hi!C!”);}执行如下命令:$gcctes
6、t.c在当前目录下产生一个名为a.out的文件。$./a.out执行a.out。注意程序前面加上了”./”Hi!C!程序输出的信息,即执行的结果GCC的选项繁多,以下仅列出几个常用的选项,并作分类说明。其他选项可参考linux的manpage在线说明。2、GCC选项GCC常用的选项说明如下:-ofile:编译产生的文件以指定文件名保存。如果file没有指定,默认文件名为a.out。$gcctest.c–otest在当前目录下产生一个名为test的文件。$./test[实验内容与实验步骤]1、编辑并运行下列代码,理解fork函数的执行原理。下面的示例说
7、明如何使用有关进程操作的系统调用。每个进程都有唯一的进程ID号(PID)。PID通常在数值上逐渐增大。因此,子进程的ID一般要比父进程大。当然,PID的值不可能无限大,当它超过系统规定的最大值时,就反转回来使用最小的尚未使用的PID值。如果父进程死亡或退出,则子进程就会被指定一个新的父进程init(其PID为1)。本程序利用fork()创建子进程,利用getpid()和getppid()分别获得进程的PID和父进程PID。使用sleep()将相关进程挂起几秒钟。/*演示有关进程操作#include#include8、s.h>#include#includeintmain(intargc,
8、s.h>#include#includeintmain(intargc,
此文档下载收益归作者所有