国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

exit()函數(shù),_exit()函數(shù),_EXIT()函數(shù) 和atexit函數(shù)

2019-11-08 02:19:19
字體:
供稿:網(wǎng)友

(1)exit()  _exit() _Exit()

  #include <stdlib.h>:   void exit( int status );   void _Exit( int status );  #include <unistd.h>:    void _exit( int status );

在圖1中可以看出:這三個函數(shù)?用于正常終?止?一個程序,_exit和_Exit?立即進?入內(nèi)核,而exit則要先做?一些清理?工作(調(diào)?用執(zhí)?行各終?止處理程序,刷新所有輸出流,關(guān)閉所有標(biāo)準(zhǔn)I/O流),再進?入內(nèi)核。三個函數(shù)所帶的整型參數(shù)稱為終?止?fàn)顟B(tài)或退出狀態(tài)。

 下面寫個小代碼測試一下:

  利用PRintf函數(shù)的行緩存方式,遇到“/n”換行符自動從緩存區(qū)讀出記錄

 測試exit函數(shù): 測試結(jié)果:

  分析:由于exit會刷新輸出流,所以第二個printf的內(nèi)容會顯示

       

 測試_exit()函數(shù)同理_Exit函數(shù)測試結(jié)果:

分析:_exit()函數(shù)不會輸出第二個printf的內(nèi)容

   

atexit()函數(shù):

      如果需要在main退出后再執(zhí)行一段代碼,可以使用atexit()函數(shù)注冊一個函數(shù)。 atexit()函數(shù)介紹:函數(shù)原型:int atexit( void (*fun)( void ) );頭文件:#include<stdlib.h>功能: 注冊終止函數(shù)(即main執(zhí)行結(jié)束后調(diào)用的函數(shù))注意:按照ISO C的規(guī)定,一個進程中最多可以用atexit()注冊32個處理函數(shù),這些函數(shù)將由exit自動調(diào)用。atexit()注冊的函數(shù)類型應(yīng)為不接受任何參數(shù)的void函數(shù),exit調(diào)用這些注冊函數(shù)的順序與它們 注冊時候的順序相反,也即最先注冊的最后調(diào)用,最后注冊的最先調(diào)用。同一個函數(shù)如若登記多次,則也會被調(diào)用多次。

當(dāng)調(diào)用fork時,子進程繼承父進程注冊的atexit;

當(dāng)atexit注冊的函數(shù)中有一個沒有正常返回或被kill,則后續(xù)的注冊函數(shù)都不會被執(zhí)行;

代碼演示:

#include<stdio.h>#include<stdlib.h>void fun1(){	printf("this is fun1/n");}void fun2(){	printf("this is fun2/n");}void fun3(){	printf("this is fun3/n");}int main(){	atexit(fun1);	atexit(fun2);	atexit(fun3);	return 0;}結(jié)果:

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜兰市| 永泰县| 乌兰县| 于田县| 育儿| 安国市| 云南省| 财经| 荥经县| 婺源县| 九江县| 桃江县| 吉隆县| 绥化市| 尼勒克县| 陵水| 尖扎县| 济南市| 陆丰市| 灌南县| 类乌齐县| 婺源县| 衢州市| 安庆市| 宁化县| 太仓市| 台湾省| 宁都县| 乐陵市| 精河县| 浦县| 资中县| 阿克苏市| 莆田市| 临沂市| 牟定县| 广安市| 遂宁市| 民县| 汝阳县| 榆树市|