使用信号灯集完成三个进程的同步,A进程输出字符A,B进程输出字符B,C进程输出字符C,要求输出结果为ABCABCABCABCABC...
#include<myhead.h>
#include"sem.h"
int main(int argc, const char *argv[])
{
//创建并初始化一个结构体
int semid=create_sem(3);
pid_t pid1,pid2;
if((pid1=fork())==0)
{
//子进程1
while(1)
{
P(semid,0);
sleep(1);
printf("A");
fflush(stdout);
V(semid,1);
}
}
if((pid2=fork())==0)
{
//子进程2
while(1)
{
P(semid,1);
sleep(1);
printf("B");
fflush(stdout);
V(semid,2);
}
}
//父进程
while(1)
{
P(semid,2);
sleep(1);
printf("C");
fflush(stdout);
V(semid,0);
}
sem_delete(semid);
wait(NULL);
wait(NULL);
return 0;
}