共找到2條詞條名為abort的結果 展開
- 計算機術語
- 英文單詞
abort
計算機術語
引發不正常進程的終止。
函數名:abort
頭文件:#include
功能:異常終止一個進程。中止當前進程,返回一個錯誤代碼。錯誤代碼的預設值是3。
該函數產生SIGABRT信號併發送給自己,默認情況下導致程序終止不成功的終止錯誤代碼返回到主機環境。
用法:void abort(void);
程序例:
#include
#include
int main(void)
{
printf("Calling abort()\n");
abort();
return 0;
}
因為調用abort()而終止,那麼是因為某些條件成立,而用戶不得不作出終止當前進程的決定(參考assert()),abort()行為本身並不異常,如果用戶調用了,那麼進程就終止,完全是預期的行為。原理上來說,abort通過給自己發送SIGABRT信號,然後kernel會殺掉自己,並coredump。但是,如果用戶重新定義了SIGABRT信號的行為呢?
結果是,會列印"catch signal",然後還是coredump了。原因是:abort()函數裡面先給自己發送SIGABRT保證handler執行,然後再重新註冊了SIGABRT,會修改成默認行為,再次給自己發送SIGABRT,保證執行默認行為,coredump。同時,還會flush所有打開的文件,然後關閉掉。