Linux下的多进程编程-.pdf
《Linux下的多进程编程-.pdf》由会员分享,可在线阅读,更多相关《Linux下的多进程编程-.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux 下的多进程编程一)理解 Linux 下进程的结构Linux下一个进程在内存里有三部份的数据,就是“数据段”,“堆栈段”和“代码段”,其实学过汇编语言的人一定知道,一般的CPU象 I386,都有上述三种段寄存器,以方便操作系统的运行。“代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。堆栈段存放的就是子程序的返回地址、子程序的参数以及程序的局部变量。而数据段则存放程序的全局变量,常数以及动态数据分配的数据空间(比如用malloc之类的函数取得的空间)。这其中有许多细节问题,这里限于篇幅就不多介绍了。系统如果同时运行数
2、个相同的程序,它们之间就不能使用同一个堆栈段和数据段。(二)如何使用fork 在 Linux下产生新的进程的系统调用就是fork函数,这个函数名是英文中“分叉”的意思。为什么取这个名字呢?因为一个进程在运行中,如果使用了fork,就产生了另一个进程,于是进程就“分叉”了,所以这个名字取得很形象。下面就看看如何具体使用fork,这段程序演示了使用fork的基本框架:void main()int i;if(fork()=0)/*子进程程序 */for(i=1;i 1000;i+)printf(This is child processn);else /*父进程程序*/for(i=1;i );fge
3、ts(command,256,stdin);commandstrlen(command)-1=0;if(fork()=0)/*子进程执行此命令*/execlp(command,command);/*如果 exec 函数返回,表明没有正常执行命令,打印错误信息*/perror(command);exit(errorno);else /*父进程,等待子进程结束,并打印子进程的返回值*/wait(&rtn);printf(child process return%dn,.rtn);此程序从终端读入命令并执行之,执行完成后,父进程继续等待从终端读入命令。熟悉 DOS和 WINDOWS 系统调用的朋友一
4、定知道DOS/WINDOWS 也有 exec 类函数,其使用方法是类似的,但 DOS/WINDOWS还有 spawn 类函数,因为DOS是单任务的系统,它只能将“父进程”驻留在机器内再执行“子进程”,这就是spawn 类的函数。WIN32已经是多任务的系统了,但还保留了 spawn 类函数,WIN32中实现 spawn 函数的方法同前述UNIX中的方法差不多,开设子进程后父进程等待子进程结束后才继续运行。UNIX在其一开始就是多任务的系统,所以从核心角度上讲不需要spawn 类函数。另外,有一个更简单的执行其它程序的函数system,它是一个较高层的函数,实际上相当于在SHELL环境下执行一条
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 进程 编程
限制150内