2014-09-02 62 views
0

我瞭解fork函數。我知道它重複了父進程,並且在fork函數被調用之後父進程完成了它的執行,並且子進程開始執行。 這裏是一個Python代碼叉一個子進程分叉過程的stdout和stdin會發生什麼?

import os 
pid, master_fd =os.forkpty() 
if pid == 0: 
    print ('child') 
else: 
    print ('parent') 

爲什麼字子沒有得到印?

+3

爲什麼使用'os.forkpty()'而不是'os.fork()'? – 2014-09-02 13:31:21

回答

2

單詞「孩子」沒有出現,因爲os.forkpty()創建一個新的僞終端並將孩子的輸出路由到它。

如果您使用os.fork()代替,則您的理解是正確的。

+1

看到''child''字符串,你可以從父'master_fd'中讀取:'print(os.read(master_fd,512).decode())' – jfs 2014-09-02 13:51:39