实验
4 Linux
父子进程同步
【实验目的】
(
1
)熟悉在
c
语言源程序中使用
linux
所提供的系统调用界面的方法。
(
2
)理解同步的概念。
(
3
)使用系统调用
wait()
和
exit()
,实现父子进程同步。
【实验原理
/
实验基础知识】
一、同步
在多道系统中,一个进程相对于另一个进程的运行速度是不确定的,但相互
合作的几个进程需要在某些情况下相互协调工作。
同步关系是指多个相互合作的进程,
在某些情况下可能需要相互等待或相互
交换信息,这种相互制约关系称为进程同步。
二、
Linux
中父进程等待子进程的同步
Linux
中实现进程同步的两个系统调用为
wait
()和
exit
()
,使用这两个
系统调用实现父进程等待子进程的同步。具体实现方法是:子进程终止时执行
exit
()向父进程发终止信号,父进程使用
wait
()等待子进程的终止。
1
.
Wait
()系统调用
功能:等待任意一个子进程终止
格式:
pid_t wait( )
例:
wait
(
0
)等待任意子进程结束
返回值:
返回值≥
0
表示有子进程终止,其值为终止子进程的
pid
号。
返回值
=
-
1
表示无子进程终止。
该进程阻塞,
插入等待子进程终止的队
列,当有子进程终止时被唤醒。
注意:
等待多个子进程终止需要使用多个
wait()
,
如果该进程没有创建自己
的子进程就不能使用
wait()
。
所用头文件:
#
include
<
sys
/
wait
.
h
>
,
#
include
<
sys
/
types
.
h
>
2
.
Exit
()系统调用