www.pudn.com > pthread_examples.rar > piperead.c
/************** * readtest.c * **************/ #include#include #include #include main() { int pipe_fd[2]; /*定义管道文件描述符*/ pid_t pid; char r_buf[100]; /*管道读缓冲区*/ char w_buf[4]; /*管道写缓冲区*/ char* p_wbuf; int r_num; int cmd; memset(r_buf, 0, sizeof(r_buf)); memset(w_buf, 0, sizeof(w_buf)); p_wbuf = w_buf; /*建立管道*/ /*pipe_fd[0]用于读数据,是管道读端*/ /*pipe_fd[1]用于写数据,是管道写端*/ if(pipe(pipe_fd)<0) { printf("pipe create error\n"); return -1; } /*管道用于两个进程之间的通信*/ if((pid = fork()) == 0) /*pid == 0表示返回的父进程*/ { printf("\n"); close(pipe_fd[1]); sleep(3);/*确保父进程关闭写端*/ r_num = read(pipe_fd[0], r_buf, 100); printf("read num is %d, the data read from the pipe is %d\n", r_num, atoi(r_buf)); close(pipe_fd[0]); printf("pid = %d\n", getpid()); exit(0); } else if(pid > 0) { close(pipe_fd[0]);//read strcpy(w_buf, "111"); if(write(pipe_fd[1], w_buf, 4) != -1) { printf("parent write over\n"); } close(pipe_fd[1]);//write printf("parent close fd[1] over\n"); sleep(10); printf("pid = %d\n", getpid()); exit(0); } }