Linux fork()返回值


linux fork()返回值

fork() 是Unix系統創建子進程的唯一方法,其他包或模塊的底層都調fork。fork作用是復制克隆一個新進程(子進程),繼續同時向下執行。

特點:fork被調用一次,返回兩次,一次在父進程中返回子進程PID,一次在子進程中返回0。fork失敗返回負數,發生在PID個數達上限或內存不足時。

# Python示例
import os


print("當前進程PID為:", os.getppid())
# 此時僅有一個進程
pid = os.fork()

# 此時已經有兩個進程在同時運行
if pid < 0:
    print("fork失敗")
elif pid:
    print(f"我是父進程,我的PID是:{os.getppid()},fork給我返回的子進程PID是:{pid}")
else:
    print(f"我是子進程,我的PID是:{os.getpid()},fork給我返回的PID是:{pid}")


# 當前進程PID為: 20925
# 我是父進程,我的PID是:20925,fork給我返回的子進程PID是:6707
# 我是子進程,我的PID是:6707,fork給我返回的PID是:0

為什么fork會返回兩次?

由於在復制時復制了父進程的堆棧段,所以兩個進程都停留在fork函數中,等待返回。因此fork函數會返回兩次,一次是在父進程中返回,另一次是在子進程中返回。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM