#include <myhead.h>
#include "sem.h"
int main(int argc, const char *argv[])
{
int semid=(create_sem(3));//创建三个信号灯
if(semid==-1)
{
perror("create_sem error");
return -1;
}
pid_t pid1=-1;
pid1=fork();//父子进程
if(pid1>0)//父进程
{
pid_t pid2=-1;
pid2=fork();//父子进程
if(pid2>0)//父进程
{
int a=5;
while(a--)
{
P(semid,2);//给定2号灯值1
printf("A\n");
V(semid,0);
}
wait(NULL);
}
else if(pid2==0)//子进程
{
int a=5;
while(a--)
{
P(semid,1);//给定1号灯值0
printf("C\n");
V(semid,2);
}
exit(EXIT_SUCCESS);
}
}
else if(pid1==0)//子进程
{
int a=5;
while(a--)
{
P(semid,0);//给0定号灯值0
printf("B\n");
V(semid,1);
}
exit(EXIT_SUCCESS);
}
del_sem(semid);
return 0;
}
12-12
于 2023-12-12 20:34:54 首次发布