无名管道(用于通过fork创建的父子进程间通信)
Int pipe(int pipefd[2]);
pipe[0]用于读操作、pipe[1]用于写操作
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int pipefd[2] = {};
if(pipe(pipefd))
{
perror("pipe");
return -1;
}
pid_t id = fork();
if(id)
{
close(pipefd[0]);
char buf[256] = {};
for(;;)
{
gets(buf);
write(pipefd[1],buf,strlen(buf)+1);
if(0 == strcmp(buf,"quit")
{
printf("father end");
close(pipefd[1]);
return 0;
}
}
}
else
{
close(pipefd[1]);
char buf[256] = {};
for(;;)
{
read(pipefd[0],buf,sizeof(buf));
printf("%s\n",buf);
if(0 == strcmp(buf,"quit")
{
printf("child end");
close(pipefd[0]);
return 0;
}
}
}
}