日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

fork与vfork的区别

發布時間:2023/12/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fork与vfork的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

fork與vfork的區別
1.vfork保證子進程先運行,在它調用exec或exit之后父進程才可能被調度運行。如果在調用這兩個函數之前子進程依賴于父進程的進一步動作,則會導致死鎖。

2.fork要拷貝父進程的進程環境;而vfork則不需要完全拷貝父進程的進程環境,在子進程沒有調用exec和exit之前,子進程與父進程共享進程環境,相當于線程的概念,此時父進程阻塞等待。

為什么會有vfork呢?

因為以前的fork當它創建一個子進程時,將會創建一個新的地址空間,并且拷貝父進程的資源,然后將會有兩種行為:

1.執行從父進程那里拷貝過來的代碼段

2.調用一個exec執行一個新的代碼段

當進程調用exec函數時,一個新程序替換了當前進程的正文,數據,堆和棧段。這樣,前面的拷貝工作就是白費力氣了,這種情況下,聰明的人就想出了vfork。vfork并不復制父進程的進程環境,子進程在父進程的地址空間中運行,所以子進程不能進行寫操作,并且在兒子“霸占”著老子的房子時候,要委屈老子一下了,讓他在外面歇著(阻塞),一旦兒子執行了exec或者exit后,相當于兒子買了自己的房子了,這時候就相當于分家了。

因此,如果創建子進程是為了調用exec執行一個新的程序的時候,就應該使用vfork
之后我會更新 fork 和 vfork 的具體用法。

總結

以上是生活随笔為你收集整理的fork与vfork的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。