#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <a.h>
#include"sem.h"
int main(int argc, const char *argv[])
{
//11、创建并初始化一个信号灯集
int semid = create_sem(3);
pid_t pid1=-1;
//创建出一个子进程
pid1=fork();
if(pid1==0)
{
while(1)
{
//22、申请0号灯的资源
P(semid, 0);
printf("A");
//33、释放1号灯的资源
fflush(stdout);
V(semid, 1);
sleep(2);
//sleep(2);
}
}else if(pid1>0)
{
pid_t pid2=fork();
if(pid2==0)
{
while(1)
{
//22、申请2号灯的资源
P(semid, 2);
printf("C");
//33、释放0号灯的资源
fflush(stdout);
V(semid, 0);
//sleep(2);
}
}else if(pid2>0)
{
while(1)
{
//22、申请1号灯的资源
P(semid, 1);
printf("B");
fflush(stdout);
//33、释放2号灯的资源
V(semid, 2);
}
}else{
perror("fork 2 error");
return -1;
}
}else{
perror("fork 1 error");
return -1;
}
return 0;
}
?