day8:信号灯集

思维导图

day8:信号灯集_第1张图片

使用信号灯集完成三个进程的同步,A进程输出字符A,B进程输出字符B,C进程输出字符C,要求输出结果为
ABCABCABCABCABC...

#include 
#include"sem.h"
int main(int argc, const char *argv[])
{
	int semid=create_sem(3);
	pid_t pid1,pid2,pid3;
	pid1=fork();
	if(pid1==0)
	{
		//子进程1
		while(1)
		{
			P(semid,0);
			printf("A");
			fflush(stdout);
			sleep(2);
			V(semid,1);
		}
		exit(EXIT_SUCCESS);
	}
	pid2=fork();
	if(pid2==0)
	{
		//子进程2
		while(1)
		{
			P(semid,1);
			printf("B");
			fflush(stdout);
			sleep(2);
			V(semid,2);
		}

		exit(EXIT_SUCCESS);
	}
	pid3=fork();
	if(pid3==0)
	{
		//子进程3
		while(1)
		{
			P(semid,2);
			printf("C");
			fflush(stdout);
			sleep(2);
			V(semid,0);
		}

		exit(EXIT_SUCCESS);
	}
	wait(NULL);
	wait(NULL);
	wait(NULL);
	return 0;
}

day8:信号灯集_第2张图片

你可能感兴趣的:(linux)