-5

親関数を介して2つの整数をパイプに書き込み、子関数を介して同じ整数を読み取るPythonでプログラムを作成しようとしています。子関数は、2 つの積を出力することになっています。

問題は、実行すると、想定どおりに5秒間待機しますが、2ではなく441の値を返すことです.

誰かがこのコードを修正する方法を理解するのを手伝ってくれることを願っています:)

import os,time

def child(pipein):
    while True:
        num1 = int(os.read(pipein,32))
        num2 = int(os.read(pipein,32))
        r=(num1)*(num2)
        print(r)
        os._exit(0)

def parent():
    pipein,pipeout = os.pipe()
    x=5
    if os.fork()==0:
        child(pipein)
    else:
        while True:
            num1=str(2)
            num2=str(1)
            line=os.write(pipeout,num1.encode())
            line=os.write(pipeout,num2.encode())
            time.sleep(x)   

parent()
4

2 に答える 2