91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

linux中fork和exec有哪些區別

發布時間:2022-05-17 16:04:28 來源:億速云 閱讀:173 作者:iii 欄目:建站服務器

這篇文章主要介紹“linux中fork和exec有哪些區別”,在日常操作中,相信很多人在linux中fork和exec有哪些區別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”linux中fork和exec有哪些區別”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

linux中fork和exec的區別:1、fork用于創建一個新的進程,稱為子進程,而exec則是用指定的程序替換當前進程的全部內容;2、exec的前后進程id沒有改變,而fork重新創建了子進程后id改變了。

本教程操作環境:linux7.3系統、Dell G3電腦。

linux中fork和exec有什么區別

fork和exec都是和進程相關的調用.

fork

調用fork可以創建一個新的進程稱為子進程, 調用fork函數的進程稱為父進程, 子進程的所有內容都和父進程相同, 除了pcd(進程控制模塊), 如果這兩個進程都沒有對內存做寫操作的話, 那么兩個進程共享調用fork函數的進程的內存頁, 這樣表面上看fork創建進程比exec創建進程快. 但只要兩個進程其中一個對內存做了修改, 那么在修改之前, 就會把內存頁復制一份給子進程用.

exec

調用exec創建進程, 實際上不是創建進程, 更準確的說是加載可執行文件, 調用exec后會把exec中指定的可執行文件加載到調用exec的進程的空間內, 并把調用exec的進程的內存更新為exec中指定的可執行文件的內容.

區別

fork主要是Linux用來建立新的進程(線程)而設計的,exec()系列函數則是用來用指定的程序替換當前進程的全部內容。因此exec()系列函數常常在前三個函數使用以后調用,來建立一個全新的程序運行環境。Linux用init進程啟動其余進程的過程通常都是這樣的

fork是最簡單的調用,不須要任何參數,僅僅是在建立一個子進程并為其建立一個獨立于父進程的空間。

我們用fork函數創建新進程后,經常會在新進程中調用exec函數去執行另外一個程序(比如在我們寫程序時需要使用我們之前的寫過的某個程序的功能,通過該方式直接去調用一個可執行程序可以大大的簡化我們的程序)。當進程調用exec函數時,該進程被完全替換為新程序。因為調用exec函數并不創建新進程,所以前后進程的ID并沒有改變。

父進程通過fork()的方式產生一個一模一樣的子進程,創建出來的子進程再以exec函數的方式來執行其實際要執行的進程,最終就成為一個可以執行某些特定功能的子進程。

一個進程一旦調用exec類函數,它本身就“死亡”了,系統把代碼段替換成新的程序的代碼,廢棄原有的數據段和堆棧段,并為新程序分配新的數據段與堆棧段,唯一留下的,就是進程號,也就是說,對系統而言,還是同一個進程,不過已經是另一個程序了。即調用exec族函數后,其后面的程序都不會在執行了。

到此,關于“linux中fork和exec有哪些區別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

通榆县| 化隆| 马公市| 河南省| 西畴县| 玛纳斯县| 博湖县| 扎鲁特旗| 舟曲县| 惠来县| 江西省| 大丰市| 玉屏| 塔河县| 旬邑县| 浮梁县| 罗平县| 通州区| 富顺县| 灵台县| 玛沁县| 巴林左旗| 吉林省| 辽阳县| 崇明县| 温州市| 九江市| 杨浦区| 密云县| 资中县| 信阳市| 南汇区| 沙雅县| 青岛市| 繁峙县| 隆昌县| 太仆寺旗| 贞丰县| 阳高县| 简阳市| 凤庆县|