#include<stdio.h>
#include<sys/types.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/wait.h>
#include<string.h>
int main()
{
int fd[2] = {0};//fd[0]读;fd[1]写
int ret = pipe(fd);
if(-1 == ret)
{
perror("pipe");
exit(1);
}
pid_t pid = fork();
if(-1 == pid)
{
perror("fork");
exit(2);
}
if(0 == pid)
{
//c;read
//close(fd[1]);
char buffer[32];
while(1)
{
if(-1 == read(fd[0], buffer,32))
{
perror("read");
exit(3);
}
printf("C :receive: %s\n", buffer);
if(-1 == write(fd[1], buffer, strlen(buffer)))
{
perror("write");
exit(4);
}
if(strcmp(buffer, "exit") == 0)
{
close(fd[0]);
exit(0);
}
sleep(1);
memset(buffer, 0, 32);
}
}
else
{
//p:write
//close(fd[0]);
char buffer[32] = {0};
while(1)
{
scanf("%s",buffer);
if(-1 == write(fd[1], buffer, strlen(buffer)))
{
perror("write");
exit(4);
}
sleep(1);
if(-1 == read(fd[0], buffer,32))
{
perror("read");
exit(3);
}
printf("P :receive: %s\n",buffer);
if(strcmp(buffer, "exit") ==0)
{
close(fd[1]);
exit(0);
}
memset(buffer, 0, 32);
}
}
}
#include<sys/types.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/wait.h>
#include<string.h>
int main()
{
int fd[2] = {0};//fd[0]读;fd[1]写
int ret = pipe(fd);
if(-1 == ret)
{
perror("pipe");
exit(1);
}
pid_t pid = fork();
if(-1 == pid)
{
perror("fork");
exit(2);
}
if(0 == pid)
{
//c;read
//close(fd[1]);
char buffer[32];
while(1)
{
if(-1 == read(fd[0], buffer,32))
{
perror("read");
exit(3);
}
printf("C :receive: %s\n", buffer);
if(-1 == write(fd[1], buffer, strlen(buffer)))
{
perror("write");
exit(4);
}
if(strcmp(buffer, "exit") == 0)
{
close(fd[0]);
exit(0);
}
sleep(1);
memset(buffer, 0, 32);
}
}
else
{
//p:write
//close(fd[0]);
char buffer[32] = {0};
while(1)
{
scanf("%s",buffer);
if(-1 == write(fd[1], buffer, strlen(buffer)))
{
perror("write");
exit(4);
}
sleep(1);
if(-1 == read(fd[0], buffer,32))
{
perror("read");
exit(3);
}
printf("P :receive: %s\n",buffer);
if(strcmp(buffer, "exit") ==0)
{
close(fd[1]);
exit(0);
}
memset(buffer, 0, 32);
}
}
}