- 论坛徽章:
- 0
|
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#define K 1024
#define WRITEN (10*K)
int main()
{
int result=-1;
int fd[2];
pid_t pid;
char string[WRITEN]="hello fifo";
char readbuff[3*K];
int *write_fd=&fd[0];
int *read_fd=&fd[1];
result=pipe(fd);
if(result==-1)
{
printf("error\n");
return -1;
}
pid=fork();
if(pid==-1)
{
printf("error fork\n");
return -1;
}
else if(pid==0){
int write_size=WRITEN;
result=0;
close(*read_fd);
while(write_size>0)
{
result=write(*write_fd,string,write_size);
if(result>0)
{
write_size=-result;
printf("write %d words,leave %d words\n",result,write_size);
}
else
{
sleep(10);
}
}
return 0;
}
else
{
close(*write_fd);
while(1)
{
int nbytes=0;
nbytes=read(*read_fd,readbuff,sizeof(readbuff));
if(nbytes<0)
{
printf("no words\n");
break;
}
printf("receive %d words %s \n",nbytes,readbuff);
}
}
return 0;
} |
|