欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux 中_exit和exit的區(qū)別

 更新時(shí)間:2017年03月07日 17:31:08   作者:viclee108  
這篇文章主要介紹了Linux 中_exit和exit的區(qū)別的相關(guān)資料,需要的朋友可以參考下

Linux 中_exit和exit的區(qū)別

在Linux的標(biāo)準(zhǔn)庫函數(shù)中,有一套稱作高級I/O的函數(shù),我們熟知的printf 、fopen 、fread 、fwrite都在此列,他們也被稱作緩沖I/O。其特征是對應(yīng)每一個(gè)打開的文件,都存在一個(gè)緩沖區(qū), 在內(nèi)存中都有一片緩沖區(qū),每次讀文件會(huì)多讀若干條記錄,這樣下次讀文件時(shí)就可以直接從內(nèi)存的緩存中取出,每次寫文件時(shí)也僅僅是寫入到內(nèi)存的緩沖區(qū),等待滿足一定的條件(達(dá)到一定的數(shù)量,或者遇到特定字符,如換行和文件結(jié)束符EOF),再將緩沖區(qū)的內(nèi)容一次性的寫入文件,這樣就大大增加了文件讀寫的速度,但也為我們編程帶來了一點(diǎn)點(diǎn)麻煩,如果有些數(shù)據(jù),我們認(rèn)為已經(jīng)寫入了文件,實(shí)際上因?yàn)闆]有滿足特定的條件,他們還只是保存在緩沖區(qū)內(nèi),這時(shí)我們用_exit函數(shù)直接將程序關(guān)閉,緩沖區(qū)中的數(shù)據(jù)就會(huì)丟失,反之,如果向保證數(shù)據(jù)的完整性,就一定要使用exit函數(shù)。

exit()函數(shù)與_exit()函數(shù)最大的區(qū)別就在于exit()函數(shù)在調(diào)用exit系統(tǒng)調(diào)用之前要檢查文件的打開情況,把文件緩沖區(qū)中的內(nèi)容寫回文件,就是圖中的"清理I/O緩沖"一項(xiàng)。

exit()函數(shù)定義在stdlib.h中,而_exit()定義在unistd.h中。exit()和_exit()都用于正常終止一個(gè)函數(shù)。但_exit()直接是一個(gè)sys_exit系統(tǒng)調(diào)用,而exit()則通常是普通函數(shù)庫中的一個(gè)函數(shù)。它會(huì)先執(zhí)行一些清除操作,例如調(diào)用執(zhí)行各終止處理函數(shù)、關(guān)閉所有標(biāo)準(zhǔn)IO等,然后調(diào)用sys_exit。

    比如:

int main()
{ printf("this is a test function?。?!/n")
 printf("test exit ");
 exit(0);
}
int main()
{ printf("this is a test function?。?!/n")
 printf("test exit");
 _exit(0);
}

這兩個(gè)程序,程序1輸出的是兩句話,而程序2只輸出了一句話。原因就是因?yàn)樽詈笠痪湓捝蠜]有加上特殊的字符,如換行和文件結(jié)束符,因?yàn)檫@個(gè)時(shí)候文件是存放在緩沖區(qū)的,這個(gè)例子中文件就是存放打開的顯示設(shè)備的緩沖區(qū)中的,因?yàn)檩敵龊瘮?shù)要寫入,首先要進(jìn)行系統(tǒng)調(diào)用,這個(gè)時(shí)候系統(tǒng)會(huì)打開顯示設(shè)備的緩沖區(qū),而exit的作用就是結(jié)束,清理,就是說先檢查緩沖區(qū),把沒有寫入的數(shù)據(jù)寫入到文件,而_exit是立刻關(guān)閉文件,文件緩沖區(qū)的內(nèi)容也就消失了,這個(gè)時(shí)候就不可能再輸出到顯示設(shè)備了。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Centos7的apache網(wǎng)站環(huán)境搭建wordpress

    Centos7的apache網(wǎng)站環(huán)境搭建wordpress

    本篇文章給大家詳細(xì)分析了在Centos7的apache網(wǎng)站環(huán)境搭建wordpress的詳細(xì)操作方法,有興趣的朋友參考下。
    2018-02-02
  • 如何利用sed命令高效刪除文件的特定行

    如何利用sed命令高效刪除文件的特定行

    這篇文章主要給大家介紹了關(guān)于如何利用sed命令高效刪除文件的特定行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • linux如何利用crontab添加定時(shí)任務(wù)詳解

    linux如何利用crontab添加定時(shí)任務(wù)詳解

    這篇文章主要給大家介紹了關(guān)于linux如何利用crontab添加定時(shí)任務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Linux編譯LVGL仿真器出錯(cuò)問題解決

    Linux編譯LVGL仿真器出錯(cuò)問題解決

    大家好,本篇文章主要講的是Linux編譯LVGL仿真器出錯(cuò)問題解決,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Linux redis-Sentinel配置詳解

    Linux redis-Sentinel配置詳解

    這篇文章主要介紹了Linux redis-Sentinel配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Linux使用Cron+AT實(shí)現(xiàn)在某個(gè)確定的時(shí)間段內(nèi)隨機(jī)執(zhí)行命令

    Linux使用Cron+AT實(shí)現(xiàn)在某個(gè)確定的時(shí)間段內(nèi)隨機(jī)執(zhí)行命令

    寫了個(gè)腳本簽到,但是不想總是在確定的時(shí)間簽到,不然在數(shù)據(jù)庫里面的記錄太假了,所以需要在確定的時(shí)間段內(nèi),隨機(jī)選個(gè)時(shí)間執(zhí)行,最后想到了使用Cron+AT實(shí)現(xiàn),需要的朋友可以參考下
    2016-07-07
  • Ubuntu20的tzselect設(shè)置時(shí)間失效的問題,樹莓派服務(wù)器(推薦)

    Ubuntu20的tzselect設(shè)置時(shí)間失效的問題,樹莓派服務(wù)器(推薦)

    這篇文章主要介紹了Ubuntu20的tzselect設(shè)置時(shí)間失效的問題,樹莓派服務(wù)器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • PHP程序員玩轉(zhuǎn)Linux系列 搭建FTP代碼開發(fā)環(huán)境

    PHP程序員玩轉(zhuǎn)Linux系列 搭建FTP代碼開發(fā)環(huán)境

    這篇文章主要為大家詳細(xì)介紹了PHP程序員玩轉(zhuǎn)Linux系列文章,F(xiàn)TP代碼開發(fā)環(huán)境搭建教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • apache2.2 支持.net 3.5的設(shè)置方法

    apache2.2 支持.net 3.5的設(shè)置方法

    一直在為asp.net程序的打包發(fā)布頭疼,甚至想過把程序裝好放到vware里!但為什么一直沒有想到apache這位大哥呢?!以至今天才google apache+asp.net。
    2009-10-10
  • v2rayN的延遲是-1的問題解決方法

    v2rayN的延遲是-1的問題解決方法

    這篇文章主要為大家詳細(xì)介紹了v2rayN的延遲是-1的問題解決方法,本文通過了相關(guān)示例圖片進(jìn)行了詳細(xì)的講解,需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08

最新評論