python程序(一)之fork

2021-08-18 21:24:00 字數 644 閱讀 6315

python的os模組封裝了常見的系統呼叫,其中就包括fork,可以在python程式中輕鬆建立子程序:

import os

# 注意,fork函式,只在unix/linux/mac上執行,windows不可以

pid = os.fork()

if pid == 0:

print('哈哈1')

else:

print('哈哈2')

輸出結果:

哈哈2哈哈1

程式執行到os.fork()時,作業系統會建立乙個新的程序(子程序),然後複製父程序的所有資訊到子程序中

然後父程序和子程序都會從fork()函式中得到乙個返回值,在子程序中這個值一定是0,而父程序中是子程序的 id號

在unix/linux作業系統中,提供了乙個fork()系統函式,它非常特殊。

普通的函式呼叫,呼叫一次,返回一次,但是fork()呼叫一次,返回兩次,因為作業系統自動把當前程序(稱為父程序)複製了乙份(稱為子程序),然後,分別在父程序和子程序內返回。

子程序永遠返回0,而父程序返回子程序的id。

這樣做的理由是,乙個父程序可以fork出很多子程序,所以,父程序要記下每個子程序的id,而子程序只需要呼叫getppid()就可以拿到父程序的id。

程序管理之fork函式

include include pid t fork void fork函式在父程序中返回子程序的pid,在子程序中返回0。注意在子程序中返回的0,並不是子程序的pid,子程序的pid在父程序的返回值中儲存。而子程序的返回值是為了標識它是子程序,用來區分父子程序的。那麼為什麼這樣設計父子程序的返回值...

程序管理之fork函式

include include pid t fork void fork函式在父程序中返回子程序的pid,在子程序中返回0。注意在子程序中返回的0,並不是子程序的pid,子程序的pid在父程序的返回值中儲存。而子程序的返回值是為了標識它是子程序,用來區分父子程序的。那麼為什麼這樣設計父子程序的返回值...

Linux多程序開發(一)程序建立之fork的學習

過去一年一直在看作業系統原理,但是只是看,而沒有實際動手去做,導致的結果是現在還不會多程序和多執行緒的開發,在軟體開發這個領域,必須要動手去寫 的,不然永遠也學不會軟體開發,所以,我寫下我做的點滴,也算是和大家分享交流。include include pid t fork void include ...