站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        linux中fork和exec有什么區(qū)別

        linux中fork和exec的區(qū)別:1、fork用于創(chuàng)建一個(gè)新的進(jìn)程,稱為子進(jìn)程,而exec則是用指定的程序替換當(dāng)前進(jìn)程的全部內(nèi)容;2、exec的前后進(jìn)程id沒有改變,而fork重新創(chuàng)建了子進(jìn)程后id改變了。

        linux中fork和exec有什么區(qū)別

        本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。

        linux中fork和exec有什么區(qū)別

        fork和exec都是和進(jìn)程相關(guān)的調(diào)用.

        fork

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

        exec

        調(diào)用exec創(chuàng)建進(jìn)程, 實(shí)際上不是創(chuàng)建進(jìn)程, 更準(zhǔn)確的說是加載可執(zhí)行文件, 調(diào)用exec后會(huì)把exec中指定的可執(zhí)行文件加載到調(diào)用exec的進(jìn)程的空間內(nèi), 并把調(diào)用exec的進(jìn)程的內(nèi)存更新為exec中指定的可執(zhí)行文件的內(nèi)容.

        區(qū)別

        fork主要是Linux用來建立新的進(jìn)程(線程)而設(shè)計(jì)的,exec()系列函數(shù)則是用來用指定的程序替換當(dāng)前進(jìn)程的全部內(nèi)容。因此exec()系列函數(shù)常常在前三個(gè)函數(shù)使用以后調(diào)用,來建立一個(gè)全新的程序運(yùn)行環(huán)境。Linux用init進(jìn)程啟動(dòng)其余進(jìn)程的過程通常都是這樣的

        fork是最簡單的調(diào)用,不須要任何參數(shù),僅僅是在建立一個(gè)子進(jìn)程并為其建立一個(gè)獨(dú)立于父進(jìn)程的空間。

        我們用fork函數(shù)創(chuàng)建新進(jìn)程后,經(jīng)常會(huì)在新進(jìn)程中調(diào)用exec函數(shù)去執(zhí)行另外一個(gè)程序(比如在我們寫程序時(shí)需要使用我們之前的寫過的某個(gè)程序的功能,通過該方式直接去調(diào)用一個(gè)可執(zhí)行程序可以大大的簡化我們的程序)。當(dāng)進(jìn)程調(diào)用exec函數(shù)時(shí),該進(jìn)程被完全替換為新程序。因?yàn)檎{(diào)用exec函數(shù)并不創(chuàng)建新進(jìn)程,所以前后進(jìn)程的ID并沒有改變。

        父進(jìn)程通過fork()的方式產(chǎn)生一個(gè)一模一樣的子進(jìn)程,創(chuàng)建出來的子進(jìn)程再以exec函數(shù)的方式來執(zhí)行其實(shí)際要執(zhí)行的進(jìn)程,最終就成為一個(gè)可以執(zhí)行某些特定功能的子進(jìn)程。

        一個(gè)進(jìn)程一旦調(diào)用exec類函數(shù),它本身就“死亡”了,系統(tǒng)把代碼段替換成新的程序的代碼,廢棄原有的數(shù)據(jù)段和堆棧段,并為新程序分配新的數(shù)據(jù)段與堆棧段,唯一留下的,就是進(jìn)程號(hào),也就是說,對系統(tǒng)而言,還是同一個(gè)進(jìn)程,不過已經(jīng)是另一個(gè)程序了。即調(diào)用exec族函數(shù)后,其后面的程序都不會(huì)在執(zhí)行了。

        推薦學(xué)習(xí):Linux視頻教程

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 亚洲AV乱码久久精品蜜桃| 免费短视频软件精品一区二区| 无码人妻精品一区二区三区99不卡| 免费精品精品国产欧美在线欧美高清免费一级在线 | 中文字幕精品亚洲无线码一区应用| 亚洲精品国精品久久99热一| 精品一区二区三区东京热| 国产精品免费观看| 精品国产免费一区二区三区| 无码精品久久一区二区三区| 亚洲精品自产拍在线观看动漫| 久久99精品久久久久久9蜜桃 | 91麻豆精品视频| 国产小呦泬泬99精品| 欧美+亚洲+精品+三区| 久久精品视屏| 国产日韩精品欧美一区喷水| 911亚洲精品不卡| 亚洲高清国产拍精品青青草原| 国产综合精品一区二区三区| 亚洲第一区精品日韩在线播放| 国产三级精品三级在专区| 老司机亚洲精品影院| 99久久国产综合精品成人影院| 99免费精品视频| 99在线精品视频| 538国产精品一区二区在线| 久久99精品久久久久久秒播 | 亚洲2022国产成人精品无码区| 青草国产精品视频。| 蜜桃麻豆www久久国产精品 | 国产高清日韩精品欧美激情| 尤物国精品午夜福利视频| 久久夜色撩人精品国产| 精品久久国产一区二区三区香蕉 | 亚洲AV无码久久精品色欲| 亚洲欧美精品SUV| 无码国产乱人伦偷精品视频| 日韩精品内射视频免费观看| 色妞ww精品视频7777| 精品国际久久久久999波多野|