问题:一个父进程一个子进程,要求父进程与子进程同步:必须子进程先执行,父进程后执行。
解决办法:用信号量机制,一开始信号量初始化为0
父进程:
非临界区
p(s)
临界区
v(s)
非临界区
子进程:
非临界区
v(s)
非临界区
这样父进程执行临界区代码之前要先p操作,但是信号量是0,因此父进程被阻塞。直到子进程执行了v操作添加一个信号量,这时候父进程才能操作。
下面是实现代码
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/sem.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
/*定义联合体*/
union semun{
int val;
struct semid_ds *buf;
unsigned short *array;
};
/*定义操作函数*/
int ini