IO进程线程Day8

发布时间:2024年01月11日

使用信号灯集完成三个进程的同步,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;
}

文章来源:https://blog.csdn.net/weixin_45585727/article/details/135517181
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。