Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
5
Добавлен:
26.05.2014
Размер:
924 б
Скачать
#include<stdio.h>
#include<unistd.h>
#include<signal.h>

int chit,zap;

void konec(int sig)
{
	printf("Voleybol konchilsja :-) \n");
	exit(0);
}

void peredacha(int sig)
{
	int pid;
	char s;
	read(chit,&s,1);
	pid=getpid();
	printf("Process %d poluchil %d\n",pid,s);
	s++;
	write(zap,&s,1);
	printf("Process %d otpravil %d\n",pid,s);
}

main()
{
	signal(SIGINT,&konec);
	signal(SIGQUIT,&peredacha);
	int fd1[2],fd2[2],fd3[2],pid1,pid2,pid3;
	char a=0;
	pipe(fd1);
	pipe(fd2);
	pipe(fd3);
	write(fd1[1],&a,1);
	pid1=getpid();
	pid2=fork();
	if(pid2==0)
	{
		pid3=fork();
		if(pid3==0)
		{
			chit=fd2[0];
			zap=fd3[1];
			for(;;)
			{
				sleep(1);
				kill(pid1,SIGQUIT);
				pause();
			}
		}
		else
		{
			chit=fd1[0];
			zap=fd2[1];
			for(;;)
			{
				sleep(1);
				kill(pid3,SIGQUIT);
				pause();
			}
		}
	}
	else{
		chit=fd3[0];
		zap=fd1[1];
		for(;;)
		{
			sleep(1);
			kill(pid2,SIGQUIT);
			pause();
		}
	}	
}
Соседние файлы в папке lesja