python管道pipe


1.什么是管道
Linux進程間通信方式的一種,管道有兩端,讀端和寫端。創建管道,然后從父進程fork出子進程,
父進程和子進程擁有共同的讀寫文件描述符,可以實現子進程寫文件,父進程讀文件的操作。
示意圖如下:

2.具體操作
子進程關閉讀端,父進程關閉寫端,子進程負責寫,父進程負責讀。
代碼示例如下:

import os, time, sys
pipe_name = 'pipe_test'

def child( ):
    pipeout = os.open(pipe_name, os.O_WRONLY)
    counter = 0
    while True:
        time.sleep(1)
        os.write(pipeout, 'Number %03d\n' % counter)
        counter = (counter+1) % 5

def parent( ):
    pipein = open(pipe_name, 'r')
    while True:
        line = pipein.readline()[:-1]
        print 'Parent %d got "%s" at %s' % (os.getpid(), line, time.time( ))

if not os.path.exists(pipe_name):
    os.mkfifo(pipe_name)  
pid = os.fork()    
if pid != 0:
    parent()
else:       
    child()

運行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM