怎么查網(wǎng)站建設(shè)是哪家公司秦皇島百度推廣
目錄
- 1.接口與函數(shù)
- 2.緩沖區(qū)
- 3.exit 與 _exit
- (1)_exit
- (2)exit
??這里來認(rèn)識(shí)exit函數(shù)和 _exit接口 ,它們的作用是類似的,都是在調(diào)用后退出程序,可以在程序的任何地方調(diào)用。
1.接口與函數(shù)
exit函數(shù)和_exit接口,一個(gè)函數(shù),一個(gè)接口。那么函數(shù)和接口有什么不同的嗎?
- 系統(tǒng)調(diào)用接口:是操作系統(tǒng)提供的訪問內(nèi)核功能的接口。
- 庫函數(shù):程序員對(duì)操作系統(tǒng)提供的系統(tǒng)調(diào)用接口的封裝。(因?yàn)槌绦騿T覺得接口還不夠好用,就封裝了接口,使得它們更好用)
我們可以這么理解:庫函數(shù) = 接口+其他的一些東西。
2.緩沖區(qū)
??在進(jìn)行exit和_exit的辨析前,需要了解一下什么是緩沖區(qū),因?yàn)樗鼈兊牟煌幘驮谟诰彌_區(qū)。
??緩沖區(qū):數(shù)據(jù)在寫入文件前,首先會(huì)放到緩沖區(qū)中,等到緩沖區(qū)滿了之后,再一次性刷新緩沖區(qū),把緩沖區(qū)的內(nèi)容寫入到文件中。
??這樣是為了減少IO次數(shù),因?yàn)橐淮螖?shù)據(jù)的寫入就是一次IO操作。如果我們每次都直接把數(shù)據(jù)寫入到文件,意味著每寫入一次就要進(jìn)行一次IO操作。但是如果將多個(gè)要寫入的數(shù)據(jù)都先放到緩沖區(qū),然后一次性將緩沖區(qū)數(shù)據(jù)寫入到文件中,就相當(dāng)于多條數(shù)據(jù)只進(jìn)行了一次IO操作,這樣無疑提升了效率。
??比如常使用的printf函數(shù),我們每次打印的如果數(shù)據(jù)比較少,就會(huì)先存放在緩沖區(qū),等到緩沖區(qū)的內(nèi)容足夠多,才會(huì)一次性打印出來。
??來看看下面兩行代碼,不同之處在于第二行代碼后面有換行符’\n’,當(dāng)添加了換行符意味著這一行代碼會(huì)直接打印,而不是放到緩沖區(qū)。
printf("Hello");//數(shù)據(jù)先放在緩沖區(qū),等到緩沖區(qū)滿刷新
printf("Hello\n");//數(shù)據(jù)直接打印
3.exit 與 _exit
(1)_exit
void _exit(int status); 系統(tǒng)調(diào)用接口
??作用:在程序的任何地方都可以調(diào)用,調(diào)用后退出程序。退出前不刷新緩沖區(qū),而是直接退出并釋放資源,因此緩沖區(qū)的那些數(shù)據(jù)并不會(huì)被輸出。
(2)exit
void exit(int status); 庫函數(shù)
??作用:在程序的任何地方都可以調(diào)用,調(diào)用后退出程序。退出前刷新緩沖區(qū),把緩沖區(qū)的數(shù)據(jù)都輸出。