:
、编程:父进程要输出信息并结束之前,必须等到它的孩子进程通过无名管道把信息传过
来并结束进程后才能结束;而子进程的结束又必须等到它的子进程把数据“
9通过无名管道传过来结束返回才能结束。
试验四 区分 fork(),exec()函数的使用
一.背景知识
理解进程的概念,以及父进程和子进程的关系。理解 -23函数创建进程的含义。
二.试验目的
正确区分 -23%23函数在创建子进程的不同之处,加深对创建子进程的理解。
三.实验原理或流程图
在传统的 D 环境下,有两个基本的函数 -23、23用于创建和修改进程:函数
-23用来创建一个新的进程,该进程几乎是当前进程(父进程)的一个完全拷贝;而函
数族 23用来启动另外的进程以取代当前运行的进程。
- 函数启动一个新的进程,前面我们说过,这个进程几乎是当前进程的一个拷贝:
子进程和父进程使用相同的代码段;子进程复制父进程的堆栈段和数据段。这样,父进程
的所有数据都可以留给子进程,但是,子进程一旦开始运行,虽然它继承了父进程的一切
数据,但实际上数据却已经分开,相互之间不再有影响了,也就是说,它们之间不再共享
任何数据了。对于父进程,- 函数返回了子程序的进程号,而对于子程序, - 函数则
返回零。
四.试验内容
、阅读理解以下文字说明,理解 -23和 23函数的区别。
、调试程序并按要求完成程序的编写。
五.试验步骤
、调试以下程序,这段程序演示了使用 - 的基本框架:
./0
./10
234
9
2-23<<,34
H子进程程序H
2<9/,,9PP325L8539
:
4
H父进程程序H
2<9/,,9PP325L8539
:
:
、23函数族
下面我们来看看一个进程如何来启动另一个程序的执行。在 中要使用 函数
族。系统调用 )()对当前进程进行替换,替换者为一个指定的程序,其参数包括文
件名()、参数列表( $))以及环境变量())。 函数族当然不止一个,
但它们大致相同,在 中,它们分别是:,,,),) 和