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 ...