ABCABCABC
#include <myhead.h>
#include "sem.h"
int main(int argc, const char *argv[])
{
//创建3个灯组成的信号灯集
int semid=creat_sem(3);
//创建进程1
pid_t pid1=-1;
pid1=fork();
if(pid1==0)
{
//循环五次
int n=5;
while(n--)
{
//申请2号灯的资源
P(semid,2);
printf("A");
//刷新缓冲区
fflush(stdout);
//释放0号灯的资源
V(semid,0);
}
//退出子进程1
exit(0);
}
else if(pid1>0)
{
pid_t pid2=-1;
pid2=fork();
if(pid2==0)
{
int n=5;
while(n--)
{
P(semid,0);
printf("B");
fflush(stdout);
V(semid,1);
}
exit(0);
}
if(pid2>0)
{
int n=5;
while(n--)
{
P(semid,1);
printf("C\n");
sleep(1);
V(semid,2);
}
//阻塞等待回收子进程资源
wait(NULL);
wait(NULL);
puts("结束");
//删除信号灯集
del_sem(semid);
}
}
return 0;
}