<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 操作系統 > Linux教程 > Linux下exit命令和

        Linux下exit命令和

        時間: 孫勝龍652 分享

        Linux下exit命令和

          在Linux系統的命令中,exit命令和_exit命令看似相同實則有著不同的作用,那么exit命令和_exit命令具體有哪些區別呢?一起來和學習啦小編了解下吧。

          注:exit()就是退出,傳入的參數是程序退出時的狀態碼,0表示正常退出,其他表示非正常退出,一般都用-1或者1,標準C里有EXIT_SUCCESS和EXIT_FAILURE兩個宏,用exit(EXIT_SUCCESS);可讀性比較好一點。

          作為系統調用而言,_exit和exit是一對孿生兄弟,它們究竟相似到什么程度,我們可以從Linux的源碼中找到答案:

          #define __NR__exit __NR_exit /* 摘自文件include/asm-i386/unistd.h第334行 */

          “__NR_”是在Linux的源碼中為每個系統調用加上的前綴,請注意第一個exit前有2條下劃線,第二個exit前只有1條下劃線。 這時隨便一個懂得C語言并且頭腦清醒的人都會說,_exit和exit沒有任何區別,但我們還要講一下這兩者之間的區別,這種區別主要體現在它們在函數庫中的定義。_exit在Linux函數庫中的原型是:

          #i nclude《unistd.h》 void _exit(int status);

          和exit比較一下,exit()函數定義在stdlib.h中,而_exit()定義在unistd.h中,從名字上看,stdlib.h似乎比 unistd.h高級一點,那么,它們之間到底有什么區別呢? _exit()函數的作用最為簡單:直接使進程停止運行,清除其使用的內存空間,并銷毀其在內核中的各種數據結構;exit() 函數則在這些基礎上作了一些包裝,在執行退出之前加了若干道工序,也是因為這個原因,有些人認為exit已經不能算是純粹的系統調用。 exit()函數與_exit()函數最大的區別就在于exit()函數在調用exit系統調用之前要檢查文件的打開情況,把文件緩沖區中的內容寫回文件,就是“清理I/O緩沖”。

          exit()在結束調用它的進程之前,要進行如下步驟:

          1.調用atexit()注冊的函數(出口函數);按ATEXIT注冊時相反的順序調用所有由它注冊的函數,這使得我們可以指定在程序終止時執行自己的清理動作。例如,保存程序狀態信息于某個文件,解開對共享數據庫上的鎖等。

          2.cleanup();關閉所有打開的流,這將導致寫所有被緩沖的輸出,刪除用TMPFILE函數建立的所有臨時文件。

          3.最后調用_exit()函數終止進程。

          _exit做3件事(man): 1,Any open file descriptors belonging to the process are closed 2,any children of the process are inherited by process 1, init 3,the process‘s parent is sent a SIGCHLD signal

          exit執行完清理工作后就調用_exit來終止進程。

          此外,另外一種解釋:

          簡單的說,exit函數將終止調用進程。在退出程序之前,所有文件關閉,緩沖輸出內容將刷新定義,并調用所有已刷新的“出口函數”(由atexit定義)。

          _exit:該函數是由Posix定義的,不會運行exit handler和signal handler,在UNIX系統中不會flush標準I/O流。

          簡單的說,_exit終止調用進程,但不關閉文件,不清除輸出緩存,也不調用出口函數。

          共同:

          不管進程是如何終止的,內核都會關閉進程打開的所有file descriptors,釋放進程使用的memory!

        305249 主站蜘蛛池模板: 国产一区二区三区视频| 亚洲国产成人精品福利在线观看| 巨胸美乳无码人妻视频| 亚洲精品www久久久久久| 国产一区二区三区韩国| 最新国产麻豆aⅴ精品无码| 日韩熟女熟妇久久精品综合| 综合色天天久久| 最新中文字幕av无码专区不| 精品国产免费一区二区三区香蕉| 精品一区二区三区在线成人| 大香网伊人久久综合网2020| 扒开粉嫩的小缝隙喷白浆视频| 成人免费视频一区二区| 国产精品偷伦一区二区| 韩国三级网一区二区三区| 一区二区三区国产好的精华液| 亚洲精品成人一二三专区| 视频一区二区三区中文字幕狠狠| 国产精品无码不卡在线播放 | 男男freegayvideosxxxx| 国产精品一二三中文字幕| 国产日韩精品一区二区在线观看播放| 国产精一区二区黑人巨大| 久久婷婷大香萑太香蕉av人| 国产亚洲制服免视频| 一道本AV免费不卡播放| 亚洲A综合一区二区三区| 精品国产迷系列在线观看| 久久无码av一区二区三区电影网 | 久久这里只精品热免费99| 日本道之久夂综合久久爱| 在线天堂最新版资源| 99精品日本二区留学生| 免费夜色污私人影院在线观看| 日韩国产av一区二区三区精品| 国产伦码精品一区二区| 国产精品98视频全部国产| 午夜性色一区二区三区不卡视频| 成人欧美一区二区三区| 欧美肥老太牲交大战|