int main(int argc,const char*argv[])
{
if(mkfifo("./taila1",0664)==-1)
{
perror("./taila1");
return -1;
}
return 0;
}
int main(int argc,const char*argv[])
{
if(mkfifo("./taila2",0664)==-1)
{
perror("./taila2");
return -1;
}
return 0;
}
int main(int argc, const char* argv[])
{
pid_t dir;
dir = fork();
if (dir == 0)
{
char buff[100];
char tall[10] = "quit\n";
int fd2;
while (1)
{
memset(buff, 0, sizeof(buff));
fd2 = open("./taila1", O_RDONLY);
if (fd2 == -1)
{
perror("open2");
sleep(1);
continue;
}
int len = read(fd2, buff, sizeof(buff));
if (len == -1)
{
perror("read from pipe1");
close(fd2);
sleep(1);
continue;
}
write(1, buff, len);
if (strcmp(buff, tall) == 0)
{
close(fd2);
exit(EXIT_SUCCESS);
break;
}
}
}
if (dir > 0)
{
char buff[100];
char tall[10] = "quit\n";
int fd1;
while (1)
{
memset(buff, 0, sizeof(buff));
fd1 = open("./taila2", O_WRONLY);
if (fd1 == -1)
{
perror("open1");
sleep(1);
continue;
}
int len = read(0, buff, sizeof(buff));
if (len == -1)
{
perror("read from stdin");
close(fd1);
sleep(1);
continue;
}
write(fd1, buff, len);
if (strcmp(buff, tall) == 0)
{
wait(NULL);
break;
}
}
}
return 0;
}
int main(int argc,const char*argv[])
{
pid_t dir;
dir = fork();
if(dir==0)
{
char buff[100];
char tall[10] = "quit\n";
int fd2;
while(1)
{
memset(buff,0,sizeof(buff));
fd2 = open("./taila2",O_RDONLY);
if(fd2==-1)
{
perror("open2");
}
int len = read(fd2,buff,sizeof(buff));
write(1,buff,len);
if(strcmp(buff,tall)==0)
{
close(fd2);
exit(EXIT_SUCCESS);
break;
}
}
}
else if(dir>0)
{
char buff[100];
char tall[10] = "quit\n";
int fd1;
while(1)
{
memset(buff,0,sizeof(buff));
fd1 = open("./taila1",O_WRONLY);
if(fd1==-1)
{
perror("open1");
return -1;
}
int len = read(0,buff,sizeof(buff));
write(fd1,buff,len);
if(strcmp(buff,tall)==0)
{
wait(NULL);
break;
}
}
}
return 0;
}