您好,登錄后才能下訂單哦!
fork()與vfork()區別:
1.fork()父子進程的執行次序不確定,它們的調度順序由調度器說了算。而vfork()保證子程序先運行,在調用exit或者exec前父子進程數據共享,在子進程調用exit或exec退出后父進程才能被調度運行。
2.fork()子進程會拷貝父進程的數據段,而vfork()父子進程共享數據段。
return與exit返回時的區別:
首先結束子進程的調用需要用exit(),因沒有修改函數棧,若在vfork中return,那就意味在main函數中return,這是因為父子進程共享函數棧。由于main函數也是被啟動例程調用的,因此main函數return后就返回到啟動例程中,而main函數return后還會調一些exit()相似函數。
因return會釋放局部變量,并彈棧,回到上級函數執行,而exit(它不是系統調用,時glibc對系統調用_exit()的封裝)直接退掉。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。