NAME
_exit(),_Exit() - 終止進程.
SYNOPSIS
#include <unistd.h>
void _exit(int status);
#include <stdlib.h>
void _Exit(int status);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
_Exit():
_XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
or cc -std=c99
DESCRIPTION
調用_exit()函數會立即終止進程,屬於該進程的所有打開的文件描述符都會關閉,進程的子進程會歸屬到init進程,成爲init的子進程,並向其父進程發送SIGCHLD信號.
終止狀態status傳遞返回給父進程,根據子進程的終止狀態,父進程可以調用wait()函數處理該子進程.
函數_Exit()等價於函數_exit().
RETURN VALUE
_exit()和_Exit()函數沒有返回值.
CONFORMING TO
SVr4, POSIX.1-2001, 4.3BSD. The function _Exit() was introduced by C99.
NOTES
討論終止進程的作用,終止狀態的傳遞,僵死進程,信號發送等等,詳細請查看exit()函數.
函數_exit()類似於exit(),但_exit()函數不會調用由atexit()和on_exit()函數註冊的終止處理程序.它是否清理IO緩衝區和刪除臨時文件是依實作(情況)而定的.在另一方面,調用_exit()函數時,關閉文件描述符可能會導致一個未知的延時,並等待輸出完成.如果不希望出現延時,可以在調用_exit()函數之前先調用tcflush()函數,進程是否取消等待IO是依實作(情況)而定的.
在glibc 2.3版本前,庫函數_exit()與內核系統調用同名,從glibc 2.3版本後,庫函數調用exit_group()來終止進程中的所有線程.
END
筆者:個人能力有限,只是學習參考...讀者若發現文中錯誤,敬請提出.