pipo管道通信适合在父子进程,兄弟进程间通信。
#include<cstring>
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/types.h>
void sys_err(const char * str)
{
perror(str);
exit(-1);
}
int main()
{
int fd[2];
pid_t pid;
char buf[2048];
if (pipe(fd) < 0)
{
sys_err("pipe");
}
if((pid = fork()) < 0)
{
sys_err("fork");
}
else if(pid == 0)
{
int len;
close(fd[1]);
while(1)
{
len = read(fd[0],buf,sizeof(buf));
std::cout<<buf<<std::endl;
}
close(fd[0]);
}
else
{
int i;
close(fd[0]);
while(1)
{
sprintf(buf,"write : %d\n",i++);
write(fd[1],buf,sizeof(buf));
sleep(1);
}
close(fd[1]);
}
return 0;
}