您的位置:首页 > 运维架构 > Linux

linux之无名管道pipe

2011-09-24 17:28 295 查看
#include <unistd.h>

#include <sys/types.h>

#include <errno.h>

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main()

{

        int pipe_fd[2]; //创建管道标识符

        pid_t pid;

        char r_buffer[100];

        char *w_buffer;

        int ret;

        memset(r_buffer,0,sizeof(r_buffer));

        if(pipe(pipe_fd)<0) / /创建管道

        {

                printf("pipe create error\n");
                return -1

    }

        if((pid=fork())==0)

        {

                close(pipe_fd[1]);

                sleep(2);

                while(1)  //循环读取管道数据

                {

                if((ret=read(pipe_fd[0],r_buffer,100))>0)

                {

                        printf("%d data read from the pipe is %s\n",ret,r_buffer);

                }

                }

                close(pipe_fd[0]);

                exit(0);

        }

        else if(pid>0)

        {
                close(pipe_fd[0]);

//循环写入管道

                while(1){

                write(pipe_fd[1],"hello everyone.",20);
                }

                close(pipe_fd[1]);

                waitpid(pid,NULL,0);

                exit(0);

        }

        return 0;

}   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: