Python中打開管道是一種很常用的操作。通過管道,我們可以用一個程序往管道中輸入內容,另一個程序則可以從管道中讀取內容。這是一種實現(xiàn)進程間通訊的方式,比較方便實用。
# 打開一個管道 pipe_in, pipe_out = os.pipe() # 子進程 pid = os.fork() if pid == 0: # 關閉管道輸出端 os.close(pipe_out) # 從管道輸入端讀取數(shù)據(jù) while True: data = os.read(pipe_in, 1024) if not data: break print("Pipe Input: ", data.decode()) # 關閉管道輸入端 os.close(pipe_in) os._exit(0) # 父進程 else: # 關閉管道輸入端 os.close(pipe_in) # 往管道輸出端寫入數(shù)據(jù) os.write(pipe_out, b"Hello World!") # 關閉管道輸出端 os.close(pipe_out) # 等待子進程退出 os.waitpid(pid, 0)
上面的代碼展示了如何在Python中打開一個管道并進行進程間通訊。其中,os.pipe()函數(shù)用于創(chuàng)建管道。我們可以將返回值賦值給兩個變量,分別表示管道的輸入端和輸出端。然后,我們可以使用os.fork()函數(shù)創(chuàng)建一個子進程。子進程通過管道的輸入端讀取數(shù)據(jù),父進程通過管道的輸出端寫入數(shù)據(jù)。需要注意的是,在父子進程中,每個進程都要對管道做出相應的關閉操作。