Linux编程实验内容

Linux编程实验内容

ID:40559050

大小:60.00 KB

页数:7页

时间:2019-08-04

Linux编程实验内容_第1页
Linux编程实验内容_第2页
Linux编程实验内容_第3页
Linux编程实验内容_第4页
Linux编程实验内容_第5页
资源描述:

《Linux编程实验内容》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux编程实验内容Linux下C语言编辑和编译环境实验目的:熟悉Linux下C语言vi编辑器用法,利用gcc编译器对C程序进行编译实验内容:1.vi编辑器用法2.gcc编译器GNUC编译器(GCC)是一个全功能的ANSIC兼容编译器.使用GCC通常后跟一些选项和文件名来使用GCC编译器.gcc命令的基本用法如下:gcc[options][filenames]命令行选项指定的操作将在命令行上每个给出的文件上执行.GCC选项当你不用任何选项编译一个程序时,GCC将会建立(假定编译成功)一个名为a.out的可执行文件.例如,下面的命令将在当前目录下产生一个叫a.ou

2、t的文件:gcctest.c你能用-o编译选项来为将产生的可执行文件指定一个文件名来代替a.out.例如,将一个叫count.c的C程序编译为名叫count的可执行文件,你将输入下面的命令:gcc-ocountcount.c-c参数,只编译生成一个目标文件而生成可执行文件.-ooutputfilename参数,-o编译选项生成可执行文件outputfilenameLinux下多进程编程方法1.ProcessProcessID简称PID.利用PS明令可以查看当前内存中的进程.在Linux下有两个Systemcall:getpid():返回本进程的PIDgetppid

3、():返回父进程的PID例程:#include#include#includeintmain(){pid_tself,parent;self=getpid();parent=getppid();printf("PID:%d,ParentPID:%d",(int)self,(int)parent);return0;}2.建立进程Linux提供两个systemcall来建立Processfork()exec系列函数:exec[pvle]()(1)fork()函数在Linux下产生新的进程的系统调用就是

4、fork函数,这个函数名是英文中“分叉”的意思。为什么取这个名字呢?因为一个进程在运行中,如果使用了fork,就产生了另一个进程,于是进程就“分叉”了,所以这个名字取得很形象。下面就看看如何具体使用fork,这段程序演示了使用fork的基本框架:#include#include#includeintmain(){pid_tself,child;self=getpid();child=fork();if(child!=0){printf("Parentprocess,PID:%d",self);pr

5、intf("ChildprocessID:%d",child);}else{printf("Thisisthechildprocess,PID:%d",(int)getpid());}return0;}那么调用这个fork函数时发生了什么呢?一个程序一调用fork函数,系统就为一个新的进程准备了代码段,数据段和堆栈段.首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,虽然它继承了父进程的一切数据,但实际上数据却已经分开,相

6、互之间不再有影响了,也就是说,它们之间不再共享任何数据了。对于父进程,fork函数返回了子程序的进程号,而对于子程序,fork函数则返回零,这样,对于程序,只要判断fork函数的返回值,就知道自己是处于父进程还是子进程中。fork()在parentprocess里会拷贝一份相同的process成为childprocess,并且继续往下执行.(2)exec系列函数作用:启动另一程序的执行.一个进程一旦调用exec类函数,它本身就“死亡”了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留下的,就是进程号,也就是说,

7、对系统而言,还是同一个进程,不过已经是另一个程序了。系列函数exec加上pvle的字尾组合,说明如下:execl:加上l表示要利用C的varargs机制来传递程序参数.execv:表示利用数组来传递程序参数.execl()函数格式:intexecl(constchar*path,constchar*arg,...);execp:在环境变量PATH所指定的路径里查找外部程序.若没有加上p,则必须指定完整路径.intexecv(constchar*path,char*constargv[]);intexecvp(constchar*file,char*constarg

8、v[]);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。