歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

一步一步學Linux C:退出進程

Linux中常用退出函數:

  1. #include<stdlib.h>   
  2.   
  3. voidexit(int status);  
  4.   
  5. intatexit(void (*function)(void))  
  6.   
  7. inton_exit(void (*function)(int,void *),void arg*)  
  8.   
  9. voidabort(void)  
  10. #include<unistd.h>   
  11.   
  12. void_exit(int status)  
  13. #include<assert.h>   
  14.   
  15. voidassert(int expression)  

atexit:在其中注冊的無參數函數在退出時調用。成功返回0失敗返回-1,並影響errno

on_exit:在其中注冊的有參數函數在退出時調用。成功返回0失敗返回-1,並影響errno

assert是宏定義,檢查是否出錯,出錯則退出。

abort發送SIGABRT消息結束當前進程。

exit和_exit函數都是用來終止進程的。www.linuxidc.com 當程序執行到exit或_exit時,系統無條件的停止剩下所有操作,清除包括PCB在內的各種數據結構,並終止本進程的運行。但是,這兩個函數是有區別的。

exit()函數與_exit()函數最大區別就在於exit()函數在調用do_exit之前要檢查文件的打開情況,把文件緩沖區的內容寫回文件。

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

Copyright © Linux教程網 All Rights Reserved