代码:
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/wait.h>
int main()
{
int _pipe[2];
int ret = pipe(_pipe);
if(ret == -1){
printf("create pipe error! errno code is : %d\n",errno);
return 1;
}
pid_t id = fork();
if( id < 0 ){
printf("fork error!");
return 2;
}
else if( id == 0 )
{ //child
close(_pipe[0]); //close read
int i =0;
char *_mesg_c=NULL;
while(i<10)
{
_mesg_c="i am child!";
printf("write............%d\n", write(_pipe[1], _mesg_c, strlen(_mesg_c) + 1);)
sleep(1);
i++;
}
close(_pipe[1]); //close write
}
else
{ //father
close(_pipe[1]); //close write
char _mesg[100];
int j = 0;
sleep(3);
while(j<100)
{
memset(_mesg, '\0', sizeof(_mesg));
int ret = read(_pipe[0], _mesg, 12);
if (ret < 0)
{
printf("pipe is read done...\n ");
break;
}
printf("%s : code is : %d\n",_mesg, ret);
j++;
}
if (waitpid(id, NULL, 0)< 0)
{
return 3;
}
}
return 0;
}
运行结果: