http://bluefish.blog.51cto.com/214870/38875
2007
fork()是一個系統(tǒng)調(diào)用函數(shù)。該系統(tǒng)調(diào)用復制當前進程,并在進程表中創(chuàng)建一個與原進程(被稱為父進程)幾乎完全一樣的新表項,并執(zhí)行同樣的代碼,但該新進程(這里被稱為子進程)擁有自己的數(shù)據(jù)空間和環(huán)境參數(shù)。創(chuàng)建新進程的主要用途在于在新進程中使用exec()簇函數(shù)去執(zhí)行其他不同的程序。
fork()調(diào)用返回位置處,父進程將恢復執(zhí)行,而子進程則開始執(zhí)行。在父進程中,調(diào)用fork()返回的是子進程的進程標識號PID,而在子進程中fork()返回的將是0值,這樣,雖然此時還是在同樣一程序中執(zhí)行,但已經(jīng)開始叉開,各自執(zhí)行自己的那段代碼。如果fork()調(diào)用失敗,則返回小于0的值。
當程序執(zhí)行完或有必要終止時就可以調(diào)用exit()來退出程序的執(zhí)行。該函數(shù)會終止進程并釋放其占用的內(nèi)核資源。而父進程則可以使用wait()調(diào)用來查看或等待子進程的退出,并獲取被終止進程的退出狀態(tài)信息。
本文出自 “bluefish” 博客,請務必保留此出處http://bluefish.blog.51cto.com/214870/38875
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。