溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

fork與vfork區(qū)別及用exit于return返回時的區(qū)別

發(fā)布時間:2020-07-21 21:05:40 來源:網(wǎng)絡(luò) 閱讀:516 作者:yayaru9240 欄目:編程語言

fork()與vfork()區(qū)別:

1.fork()父子進程的執(zhí)行次序不確定,它們的調(diào)度順序由調(diào)度器說了算。而vfork()保證子程序先運行,在調(diào)用exit或者exec前父子進程數(shù)據(jù)共享,在子進程調(diào)用exit或exec退出后父進程才能被調(diào)度運行。

2.fork()子進程會拷貝父進程的數(shù)據(jù)段,而vfork()父子進程共享數(shù)據(jù)段。

return與exit返回時的區(qū)別:

首先結(jié)束子進程的調(diào)用需要用exit(),因沒有修改函數(shù)棧,若在vfork中return,那就意味在main函數(shù)中return,這是因為父子進程共享函數(shù)棧。由于main函數(shù)也是被啟動例程調(diào)用的,因此main函數(shù)return后就返回到啟動例程中,而main函數(shù)return后還會調(diào)一些exit()相似函數(shù)。

因return會釋放局部變量,并彈棧,回到上級函數(shù)執(zhí)行,而exit(它不是系統(tǒng)調(diào)用,時glibc對系統(tǒng)調(diào)用_exit()的封裝)直接退掉。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI