www.pudn.com > pthread_examples.rar > pipewratomic.c


#include  
#include  
#include  
 
 
main(int argc,char**argv) 
{ 
	int pipe_fd[2]; 
	pid_t pid; 
	char r_buf[4096]; 
	char w_buf[4096*2]; 
	int writenum; 
	int rnum; 
	 
	memset(r_buf, 0, sizeof(r_buf));	 
	 
	if(pipe(pipe_fd)<0) 
	{ 
		printf("pipe create error\n"); 
		return -1; 
	} 
	 
	if((pid=fork()) == 0)  /*代表父进程*/ 
	{ 
		close(pipe_fd[1]); /*关闭写管道*/ 
		while(1) 
		{ 
			sleep(1);	 
			rnum = read(pipe_fd[0], r_buf, 5120); 
			printf("child: readnum is %d\n",rnum); 
		} 
		 
		close(pipe_fd[0]); /*关闭读管道*/ 
		 
		exit(0); 
	} 
	else if(pid>0) 
	{ 
		close(pipe_fd[0]); /*关闭读管道*/ 
		memset(r_buf, 0, sizeof(r_buf));	 
		if((writenum = write(pipe_fd[1], w_buf, 5120)) == -1) 
		{ 
			printf("write to pipe error\n");		 
		} 
		else	 
		{ 
			printf("the bytes write to pipe is %d \n", writenum);		 
		} 
		writenum = write(pipe_fd[1], w_buf, 5120); 
		printf("the bytes write to pipe is %d \n", writenum); 
		close(pipe_fd[1]); 
	}	 
}