发信人: tcpip (俺的昵称改了), 信区: cnunix
标  题: 本地进程间通信第二讲:无名管道(二)
发信站: 哈工大紫丁香 (Sun Sep 26 15:31:28 1999), 转信

发信人: cpu (奔腾的心), 信区: Solaris
发信站: 华南网木棉站 (Fri Aug 21 21:57:19 1998), 转信

接上篇,上篇讨论了如何在父子进程间建立一个单向的管道,即一方只读,另
一方只写,如果两方都要求又能读又能写呢?呵呵,那么只好让父进程调用两
次pipe再fork了,这样在父子进程间形成两个管道,父子进程各自关闭一读一
写两个描述符形成两个单向但是“逆向”的管道,就合乎上述要求了,如图所
示:
                               pipe 0
      (father) filed0[0] <-=================<- filed0[1] (son)
                               
      (father) filed1[1] ->=================-> filed1[0] (son)
                               pipe 1

代码片段大致如下:

        int     pid, filed0[2], filed1[2];
        ...

        if (pipe(filed0) < 0 || pipe(filed1) < 0) {
                perror("pipe");
                exit(-1)
        }

        if ((pid = fork( )) < 0) {
                perror("fork");
                exit(-1);
        } else if (pid > 0) {   /* father */
                close(filed0[1];
                close(filed1[0];
                ...
        } else {                /* son */
                close(filed0[0];
                close(filed1[1];
                ...
        }
--

        ******************************************************
                
               青岛啤酒,可能是世界上最好的啤酒 。。。 。。。

        ******************************************************
※ 修改:.trueip 于 Sep 26 15:35:14 修改本文.[FROM: dns.mtlab.hit.ed]
--
※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: dns.mtlab.hit.ed]

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: trueip.bbs@melon.gzn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.036毫秒