Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python สื่อสารระหว่างกระบวนการพาเรนต์และชิลด์ด้วย Pipe

ใช้ fork สร้างกระบวนการลูกได้ง่ายที่สุด fork() อยู่ในไลบรารีมาตรฐาน os ของ Python

แก้ปัญหานี้ด้วย pipe() สำหรับส่งข้อมูลจากกระบวนการหนึ่งไปอีกอัน สำหรับสื่อสารสองทางต้องใช้สอง pipe หนึ่งต่อทิศทาง เพราะ pipe() เป็น single-directional

อัลกอริทึม

ขั้นตอนที่ 1: file descriptors r, w สำหรับอ่านและเขียน
ขั้นตอนที่ 2: สร้างกระบวนการด้วย fork
ขั้นตอนที่ 3: ถ้า process id เป็น 0 สร้าง child process
ขั้นตอนที่ 4: ไม่อย่างนั้นสร้าง parent process

โค้ดตัวอย่าง

import os

def parentchild(cwrites):
    r, w = os.pipe()
    pid = os.fork()
    if pid:
        os.close(w)
        r = os.fdopen(r)
        print("Parent กำลังอ่าน")
        str = r.read()
        print("Parent อ่านได้ =", str)
    else:
        os.close(r)
        w = os.fdopen(w, 'w')
        print("Child กำลังเขียน")
        w.write(cwrites)
        print("Child เขียน = ", cwrites)
        w.close()

# โค้ดหลัก
cwrites = "Python Program"
parentchild(cwrites)

ผลลัพธ์

Child กำลังเขียน
Child เขียน = Python Program
Parent กำลังอ่าน
Parent อ่านได้ = Python Program