linuxc退出進(jìn)程的代碼-創(chuàng)新互聯(lián)

將寫(xiě)內(nèi)容過(guò)程經(jīng)常用的一些內(nèi)容片段收藏起來(lái),如下的資料是關(guān)于linux c 退出進(jìn)程的內(nèi)容。

創(chuàng)新互聯(lián)公司于2013年成立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元向陽(yáng)做網(wǎng)站,已為上家服務(wù),為向陽(yáng)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
#include<stdlib.h>

voidexit(int status);

voidabort(void)
#include<unistd.h>

void_exit(int status)
#include<assert.h>

voidassert(int expression)

atexit:在其中注冊(cè)的無(wú)參數(shù)函數(shù)在退出時(shí)調(diào)用。成功返回0失敗返回-1,并影響errnoon_exit:在其中注冊(cè)的有參數(shù)函數(shù)在退出時(shí)調(diào)用。成功返回0失敗返回-1,并影響errnoassert是宏定義,檢查是否出錯(cuò),出錯(cuò)則退出。abort發(fā)送SIGABRT消息結(jié)束當(dāng)前進(jìn)程。exit和_exit函數(shù)都是用來(lái)終止進(jìn)程的。當(dāng)程序執(zhí)行到exit或_exit時(shí),系統(tǒng)無(wú)條件的停止剩下所有操作,清除包括PCB在內(nèi)的各種數(shù)據(jù)結(jié)構(gòu),并終止本進(jìn)程的運(yùn)行。但是,這兩個(gè)函數(shù)是有區(qū)別的。exit()函數(shù)與_exit()函數(shù)大區(qū)別就在于exit()函數(shù)在調(diào)用do_exit之前要檢查文件的打開(kāi)情況,把文件緩沖區(qū)的內(nèi)容寫(xiě)回文件。由于Linux的標(biāo)準(zhǔn)函數(shù)庫(kù)中,有一種被稱(chēng)作“緩沖I/O”的操作,其特征就是對(duì)應(yīng)每一個(gè)打開(kāi)的文件,在內(nèi)存中都有一片緩沖區(qū)。每次讀文件時(shí),會(huì)連續(xù)的讀出若干條記錄,這樣在下次讀文件時(shí)就可以直接從內(nèi)存的緩沖區(qū)讀??;同樣,每次寫(xiě)文件的時(shí)候也僅僅是寫(xiě)入內(nèi)存的緩沖區(qū),等滿足了一定的條件(如達(dá)到了一定數(shù)量或遇到特定字符等),再將緩沖區(qū)中的內(nèi)容一次性寫(xiě)入文件。這種技術(shù)大大增加了文件讀寫(xiě)的速度,但也給編程代來(lái)了一點(diǎn)兒麻煩。比如有一些數(shù)據(jù),認(rèn)為已經(jīng)寫(xiě)入了文件,實(shí)際上因?yàn)闆](méi)有滿足特定的條件,它們還只是保存在緩沖區(qū)內(nèi),這時(shí)用_exit()函數(shù)直接將進(jìn)程關(guān)閉,緩沖區(qū)的數(shù)據(jù)就會(huì)丟失。因此,要想保證數(shù)據(jù)的完整性,就一定要使用exit()函數(shù)。exit的函數(shù)聲明在stdlib.h頭文件中。_exit的函數(shù)聲明在unistd.h頭文件當(dāng)中。下面的實(shí)例比較了這兩個(gè)函數(shù)的區(qū)別。printf函數(shù)就是使用緩沖I/O的方式,該函數(shù)在遇到“n”換行符時(shí)自動(dòng)的從緩沖區(qū)中將記錄讀出。實(shí)例就是利用這個(gè)性質(zhì)進(jìn)行比較的。exit.c源碼

#include<stdlib.h>

#include<stdio.h>

intmain(void)

{

    printf("Using exit...n");

    printf("This is the content inbuffer");

    exit(0);

}

輸出信息:Usingexit...Thisisthecontentinbuffer

#include<unistd.h>

#include<stdio.h>

intmain(void)

{

    printf("Using exit...n");

    printf("This is the content inbuffer");

    _exit(0);

}

則只輸出:Usingexit...說(shuō)明:在一個(gè)進(jìn)程調(diào)用了exit之后,該進(jìn)程并不會(huì)馬上完全小時(shí),而是留下一個(gè)稱(chēng)為僵尸進(jìn)程(Zombie)的數(shù)據(jù)結(jié)構(gòu)。僵尸進(jìn)程是一種非常特殊的進(jìn)程,它幾乎已經(jīng)放棄了所有的內(nèi)存空間,沒(méi)有任何可執(zhí)行代碼,也不能被調(diào)度,僅僅在進(jìn)程列表中保留一個(gè)位置,記載該進(jìn)程的退出狀態(tài)等信息供其它進(jìn)程收集,除此之外,僵尸進(jìn)程不再占有任何內(nèi)存空間。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前文章:linuxc退出進(jìn)程的代碼-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://muchs.cn/article48/cdsghp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作App設(shè)計(jì)、服務(wù)器托管、外貿(mào)建站、域名注冊(cè)建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站