日期:2014-05-16 浏览次数:20697 次
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h> /*包含文件打开模式 S_IRUSR/S_IRGRP/S_IROTH...*/
int main()
{
int fd[2];
if(pipe(fd)==0)
printf("%d %d\n",fd[0],fd[1]);
else
printf("pipe create error!\n");
pid_t childpid;//进程号
printf("default pid_t:%d\n",childpid);
if((childpid=fork())==-1)
{
perror("fork error!\n");
exit(1);
}
printf("pid_t:%d\n",childpid);
char string[]="hello world,the 000 second";
char readbuf[100]={'\0'},writebuf[100]={'\0'};
if(childpid==0)
{//子进程中
close(fd[0]);//关闭管道写端口
//通过管段 向父进程写数据
int i=0;
for(;i<100;i++)
{
sprintf(string,"hello world,the %03d second",i);
write(fd[1],string,strlen(string));
printf("in subprocess:write over!\n\n");
}
}
else
{//父进程中
close(fd[1]);//关闭管道读端口
//通过管道 从子进程中读取数据
int i=0;
for(;i<100;i++)
{
read(fd[0],readbuf,strlen(string));
printf("sunprocess readfrom subprocess:%s\n",readbuf);
}
}
return 0;
}