我試圖編寫一個程序在Python中通過父函數將2個整數寫入管道,然後通過子函數讀取那些相同的整數。那麼孩子的功能應該打印出兩者的產品。在Python中管道和分叉
的問題是,當我運行它,它會等待話,5秒喜歡它應該,但隨後返回的441,而不是2
希望有人可以幫助找出如何解決這個代碼的值:)
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()
如果你想讓別人幫你,你需要減少這個問題。你應該試着解釋它是如何工作的,你期望它的行爲方式和推理的原因。你仍然可以得到答案,但線程的問題是非常不平凡的,並期待有人爲你做出的咕嚕工作不會讓你對這個社區感到敬佩。 –
您的新版本在第一對「read」之後退出,因此打印第一個值後會永遠阻止。 – abarnert