Добавил:
Fragga
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лабораторки по ОС препод Челноков / 2семестр / wi2 / lesja / lab3
.c#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();
}
}
}