日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

exit()和_exit()函数

發布時間:2025/3/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 exit()和_exit()函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

進程就好比人一樣有其生命,我們通過fork()函數來創建一個進程,那么我們又是如何來中止進程呢。

進程退出

1.在Linux中任何讓一個進程退出

進程退出表示進程即將結束。在Linux中進程退出分為了正常退出和異常退出兩種。

1>正常退出

a. 在main()函數中執行return 。


b.調用exit()函數

c.調用_exit()函數

2>異常退出

a.調用about函數

b.進程收到某個信號,而該信號使程序終止。


Tiger-John說明:
不管 是那種 退出方式,系統最終都會執行內核中的同一代碼。這段代碼用來關閉進程所用已打開的文件描述符,釋放它所占用的內存和其他資源。





3>比較以上幾種退出方式的不同點

(1)exit和return 的區別:

a.exit是一個函數,有參數。exit執行完后把控制權交給系統

b.return是函數執行完后的返回。renturn執行完后把控制權交給調用函數。

(2)exit和abort的區別:

a.exit是正常終止進程

b.about是異常終止。





現在我們重點了解exit()和_exit()函數



2.exit()和_exit()的學習

1>exit和_exit函數都是用來終止進程的。

當程序執行到exit或_exit時,系統無條件的停止剩下所有操作,清除包括PCB在內的各種數據結構,并終止本進程的運行。

2>exit在頭文件stdlib.h中聲明,而_exit()聲明在頭文件unistd.h中聲明。 exit中的參數exit_code為0代表進程正常終止,若為其他值表示程序執行過程中有錯誤發生。

3>exit()和_exit()的區別:


a._exit()執行后立即返回給內核,而exit()要先執行一些清除操作,然后將控制權交給內核。

b. 調用_exit函數時,其會關閉進程所有的文件描述符,清理內存以及其他一些內核清理函數,但不會刷新流(stdin, stdout, stderr ...). exit函數是在_exit函數之上的一個封裝,其會調用_exit,并在調用之前先刷新流。

Tiger-John說明:

exit()函數與_exit()函數最大區別就在于exit()函數在調用exit系統之前要檢查文件的打開情況,把文件緩沖區的內容寫回文件。由于Linux的標準函數庫中,有一種被稱作“緩沖I/O”的操作,其特征就是對應每一個打開的文件,在內存中都有一片緩沖區。每次讀文件時,會連續的讀出若干條記錄,這樣在下次讀文件時就可以直接從內存的緩沖區讀取;同樣,每次寫文件的時候也僅僅是寫入內存的緩沖區,等滿足了一定的條件(如達到了一定數量或遇到特定字符等),再將緩沖區中的內容一次性寫入文件。這種技術大大增加了文件讀寫的速度,但也給編程代來了一點兒麻煩。比如有一些數據,認為已經寫入了文件,實際上因為沒有滿足特定的條件,它們還只是保存在緩沖區內,這時用_exit()函數直接將進程關閉,緩沖區的數據就會丟失。因此,要想保證數據的完整性,就一定要使用exit()函數。

c . 通過一個函數實例來看看它們之間的區別:

函數實例1 : exit.c

1 #include<stdio.h>
2 #include<stdlib.h>
3
4 int main()
5 {
6 printf("using exit----\n");
7 printf("This is the content in buffer\n");
8 exit(0);
9 }

函數經過調試后

think@ubuntu:~/work/process_thread/exit$ gcc exit.c -o exit
think@ubuntu:~/work/process_thread/exit$ ./exit


執行結果為:

using exit----
This is the content in buffer

函數實例2:_exit.c

1 #include<stdio.h>
2 #include<unistd.h>
3
4 int main(void)
5 {
6 printf("using _exit--\n");
7 printf("This is the content in buffer");
8 _exit(0);
9 }
函數經過調試后

think@ubuntu:~/work/process_thread/exit$ gcc _exit.c -o _exit
think@ubuntu:~/work/process_thread/exit$ ./_exit


執行結果為 :

using _exit--


Tiger-John說明:

1.printf函數就是使用緩沖I/O的方式,該函數在遇到“\n”換行符時自動的從緩沖區中將記錄讀出。所以exit()將緩沖區的數據寫完后才退出,而_exit()函數直接退出。

2.大家也可以把函數實例2中的printf("This is the content in buffer");改為printf("This is the content in buffer\n")(即在printf中最后加一個\n看運行結果是什么,為什么會產生這樣的結果呢?)

Tiger-John補充:

父子進程終止的先后順序不同會產生不同的結果。

1>父進程先于子進程終止:

此種情況就是我們前面所用的孤兒進程。當父進程先退出時,系統會讓init進程接管子進程 。

2>子進程先于父進程終止,而父進程又沒有調用wait函數

此種情況子進程進入僵死狀態,并且會一直保持下去直到系統重啟。子進程處于僵死狀態時,內核只保存進程的一些必要信息以備父進程所需。此時子進程始終占有著資源,同時也減少了系統可以創建的最大進程數。

什么是 僵死狀態呢?

一個已經終止、但是其父進程尚未對其進行善后處理(獲取終止子進程的有關信息,釋放它仍占有的資源)的進程被稱為僵死進程(zombie)。ps命令將僵死進程的狀態打印為Z

3> 子進程先于父進程終止,而父進程調用了wait函數

此時父進程會等待子進程結束。

總結

以上是生活随笔為你收集整理的exit()和_exit()函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人午夜天堂 | 婷婷五月花| 精品少妇人妻AV无码专区在线 | 黄色片免费视频 | 超碰人人射 | 性高潮网站 | 免费成人一级片 | 欧美综合亚洲 | 超色视频 | 9191久久 | 97在线观看视频 | 91社区福利 | 亚洲日本欧美精品 | 一级视频片 | 黄骗免费网站 | 欧美成人福利视频 | 日韩精品2 | 中文字幕一区二区三区精华液 | 免费看片视频 | 黑巨茎大战欧美白妞 | 久久99精品国产91久久来源 | 亚洲精品欧洲精品 | 久久在线免费 | 骚色综合 | 91在线观看免费高清完整版在线观看 | 亚洲一区二区色 | bt男人天堂 | 日韩三级av在线 | 国产福利视频网站 | 国产粉嫩在线 | 成人免费观看视频 | 久久亚洲精 | 无码精品视频一区二区三区 | 国产情侣自拍一区 | 视频在线一区二区三区 | 97国产精东麻豆人妻电影 | 国模大尺度自拍 | 亚洲精品在线免费播放 | 国产精品久久久久久久久久久久久久久久 | 潘金莲黄色一级片 | 久久高清无码电影 | 永久免费不卡在线观看黄网站 | 精品成人在线 | 欧美人交a欧美精品 | 日本一二三视频 | 免费黄色美女网站 | 午夜毛片| 成人爱爱视频 | 成人精品免费在线观看 | 欧美亚洲色图视频 | 九九热8| 欧美在线www | 老司机午夜影院 | 亚洲国产爱 | 久久观看 | 美女四肢被绑在床扒衣 | 国产精品网站在线 | 尤果网福利视频在线观看 | 午夜精品一区二区三区在线 | 美女让男生桶 | 成人av电影免费观看 | 毛片亚洲av无码精品国产午夜 | 丁香花免费高清完整在线播放 | 久久久久久久亚洲精品 | 免费一区二区三区四区 | 婚后打屁股高h1v1调教 | 亚洲欧洲成人精品久久一码二码 | 草草地址线路①屁屁影院成人 | 亚洲加勒比在线 | 亚洲精品国产成人久久av盗摄 | 中文字幕在线观看精品 | 老公吃小头头视频免费观看 | 国产成人高清视频 | 国产日韩一区二区在线观看 | 国产网站在线 | 国产一级自拍视频 | 黑人中文字幕一区二区三区 | 亚洲精品国产精品乱码不99 | 国产亚洲欧美一区二区三区 | av网站国产 | 国产又粗又猛又色 | 日韩另类视频 | 天天舔天天干天天操 | 亚洲香蕉中文网 | 91极品蜜桃臀 | 国产最新视频在线 | 美女黄色一级 | 久久久成人精品一区二区三区 | 天天操操操操操 | 婷婷久久精品 | 亚洲天天av| 久久久无码18禁高潮喷水 | 日本最新中文字幕 | 在线视频亚洲欧美 | 一级黄色短视频 | 久久久久婷婷 | 在线观看不卡av | 日韩精品久久久久久久酒店 | 黄色一级片久久 |