色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看


exit()和_exit()函數

分享到:
           

    1)exit()和_exit()函數說明

    exit()和_exit()函數都是用來終止進程的。當程序執行到exit()或_exit()時,進程會無條件地停止剩下的所有操作,清除各種數據結構,并終止本進程的運行。但是,這兩個函數還是有區別的,其調用過程如圖1所示。


圖1 exit()和_exit()函數流程圖

    從圖1中可以看出,_exit()函數的作用是:直接使進程停止運行,清除其使用的內存空間,并清除其在內核中的各種數據結構;exit()函數則在這些基礎上做了一些包裝,在執行退出之前加了若干道工序。exit()函數與_exit()函數大的區別就在于exit()函數在終止當前進程之前要檢查該進程打開過哪些文件,把文件緩沖區中的內容寫回文件,也就是圖3.5中的“清理I/O緩沖”一項。

    由于在Linux的標準函數庫中,有一種被稱做“緩沖I/O(buffered I/O)”的操作,其特征就是對應每一個打開的文件,在內存中都有一片緩沖區。

    每次讀文件時,會連續讀出若干條記錄,這樣在下次讀文件時就可以直接從內存的緩沖區中讀取;同樣,每次寫文件時,也僅僅是寫入內存中的緩沖區,等滿足了一定的條件(如達到一定數量或遇到特定字符等),再將緩沖區中的內容一次性寫入文件。

    這種技術大大增加了文件讀寫的速度,但也為編程帶來了一些麻煩。比如有些數據認為已經被寫入到文件中,實際上因為沒有滿足特定的條件,它們還只是被保存在緩沖區內,這時用_exit()函數直接將進程關閉掉,緩沖區中的數據就會丟失。因此,若想保證數據的完整性,好使用exit()函數。

    2)exit()和_exit()函數語法

    表1列出了exit()和_exit()函數的語法要點。

表1 exit()和_exit()函數語法要點

所需頭文件 exit:#include <stdlib.h>
_exit:#include <unistd.h>
函數原型 exit:void exit(int status)
_exit:void _exit(int status)
函數傳入值 status是一個整型的參數,可以利用這個參數傳遞進程結束時的狀態。一般來說,0表示正常結束;其他的數值表示出現了錯誤,進程非正常結束。
在實際編程時,可以用wait()系統調用接收子進程的返回值,針對不同的情況進行不同的處理

    3)exit()和_exit()使用實例

    以下兩個示例比較了exit()和_exit()函數的區別。由于printf()函數使用的是緩沖I/O方式,該函數在遇到“\n”換行符時自動從緩沖區中將記錄讀出。以下示例中就是利用這個性質來進行比較的。示例1的代碼如下:

    /* exit.c */
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
        printf("Using exit...\n");
        printf("This is the content in buffer");
        exit(0);
    }
    $ ./exit
    Using exit...
    This is the content in buffer $

    讀者從輸出的結果中可以看到,調用exit()函數時,緩沖區中的記錄也能正常輸出。

    示例2的代碼如下:

    /* _exit.c */
    #include <stdio.h>
    #include <unistd.h>

    int main()
    {
        printf("Using _exit...\n");
        printf("This is the content in buffer"); /* 加上回車符之后結果又如何 */
        _exit(0);
    }
    $ ./_exit
    Using _exit...
    $

    讀者從后的結果中可以看到,調用_exit()函數無法輸出緩沖區中的記錄。

    本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》

   熱點鏈接:

   1、Linux下多進程編程之exec函數語法及使用實例
   2、Linux下多進程編程之fork()函數語法
   3、Linux下多進程編程之fork()函數說明
   4、Linux下多任務系統之線程介紹
   5、Linux下進程的內存結構

更多新聞>> 

主站蜘蛛池模板: 免费吃奶摸下激烈视频青青网 | 波多野结系列18部无码观看a | 国产午夜无码片在线观看网站 | 国模大胆一区二区三区 | 亚洲一区二三区好的精华液 | 麻豆影视免费 | 836cc.com成人影院国内 | 女人夜夜春高潮爽A∨片传媒 | 国产精品久久久久永久免费看 | 午夜福利无遮挡十八禁视频 | 好男人看在线视频 | 欧美肥婆丰满bbw | 国产AV天堂无码一区二区三区 | 成年人免费观看 | 日日躁夜夜躁狠狠躁夜夜躁 | 无码国产一区二区三区四区 | 国产SUV精品一区二区883 | 亚洲av成人噜噜无码网站 | 粉嫩AV久久一区二区三区王玥 | 欧美bbwbbwbbwbbw18 | 成年女人看片永久免费视频 | 日本国产精品无码字幕在线观看 | 高清性色生活片97 | 久久精品国产99久久丝袜 | 久久日韩乱码一二三四区别 | 我的徒弟都是大反派动漫在线观看 | 人妻无码一区二区不卡无码AV | 天堂网资源WWW | 国产精品无套内射迪丽热巴 | 中国肥老太婆高清VIDEO | 日韩美女乱婬AAA高清视频 | 日韩观看| 欧美成人V片在线观看 | 伊人五月天婷婷 | 国产美女被爽到高潮免费A片 | 最好看免费中文字幕2018 | 丰满的熟女爽死你视频 | 国产白丝无码视频在线观看 | 奇米影视视频 | 俄罗斯小younv另类 | 九九99无码精品视频在线观看 |