lzh电子论坛

欢迎来到lzh电子论坛:
如果您对电子技术感兴趣就加入我们吧!在这里互相交流互相学习!主要讨论的方向有:单片机,ARM,PCB板设计,FPGA,汇编,C/C++等方面。
-----lzh电子论坛
lzhbbs.forumotion.com
lzh电子论坛

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...

欢迎访问lzh电子论坛。可通过【谷歌,SOSO,搜狗】搜索“lzh电子论坛”直接进入论坛。点击了解论坛详细制度


    [liklon学linux]无名管道通信实验

    分享
    avatar
    Admin
    管理员
    管理员

    帖子数 : 869
    威望 : 15
    注册日期 : 12-11-23
    年龄 : 25

    [liklon学linux]无名管道通信实验

    帖子 由 Admin 于 2013-09-21, 3:12 pm

    #include <sys/types.h>
    #include <unistd.h>
    #include <errno.h>
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
            int pipe_fd[2];
            pid_t pid;
            char pipe_buf[100];
            int  r_num;
            memset(pipe_buf,0,sizeof(pipe_buf)); //数组清0
            if(pipe(pipe_fd)<0)                           //创建管道
            {
                    printf("pipe create error\n");
                    return -1;
            }
            if((pid=fork())==0)                         //创建子进程并判断是否是子进程在运行
            {
                    printf("child \n");
                    close(pipe_fd[1]);                   //关闭子进程的写通道
                    sleep(2);                               //睡眠2S让出CPU使用权,让父进程运行
                    if((r_num=read(pipe_fd[0],pipe_buf,100))>0)   //读出管道数据
                    {
                            printf("%d numbers read from the pipe is %s\n",r_num,pipe_buf);
                    }
                    close(pipe_fd[0]);
                    exit(0);
            }
            else if(pid > 0)                //如果在父进程运行
            {
                    printf("parent \n");
                    close(pipe_fd[0]);   //关闭父进程读通道
                    write(pipe_fd[1],"hello",5);   //往管道写数据
                    printf("parent write hello\n");
                    write(pipe_fd[1]," pipe",5);   //再写
                    printf("parent write pipe\n");
                    close(pipe_fd[1]);              //关闭写通道
                    sleep(3);                         //睡眠,让子进程运行
                    waitpid(pid,NULL,0);         //等待子进程运行结束
                    exit(0);
            }
    }

    运行结果:


    _________________
    电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...

      目前的日期/时间是2018-09-22, 1:59 am