码迷,mamicode.com
首页 > 系统相关 > 详细

进程间通信-无名管道

时间:2015-05-22 16:55:46      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

管道:是一种半双工的通信机制,它一端用来读,另外一端用来写;管道只能用来在具有公共祖先的两个进程之间通信(父进程和子进程或者同一父进程的两个子进程);管道通信消息遵循先进先出的原理,并且数据只能被读取一次,当此段数据被读取后就会清空。管道实质是内存页(page)。

相关函数:os.pipe();它返回读写通道文件描述符组成的元组(read_end,write_end)。

无名管道示例:

import os

pi = os.pipe()  #创建管道:(fd_read,fd_write)

pid = os.fork()

if (pid == 0):  #子进程继承父进程的资源,给父进程发送消息。

    os.write(pi[1], “hello world”)

else:

    msg = os.read(pi[0], 1024)  #父进程读取子进程发送消息。

    print msg

子进程只负责读取,父进程只负责写:

import os

p = os.pipe()

pid = os.fork()

if(pid == 0):

    os.close(p[1])

    while True:

        msg = os.read(p[0],1024)

        print msg

        if(msg == “q”):

            break

else:

    os.close(p[0])

    while True:

        str1 = raw_input()

        os.write(p[1],str1)

        if(str1 == ‘q’):

            os.wait()

            os.close(p[1])

            break

进程间通信-无名管道

标签:

原文地址:http://www.cnblogs.com/pylab/p/4522385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!