exit(0) 表示程式正常退出;
exit(1)/exit(-1) 表示程式異常退出;
exit() 結束當前程序/當前程式/,在整個程式中,只要被呼叫就結束,返回引數值;
return() 是當前函式返回,當然如果是在主函式main, 自然也就結束當前程序了,如果不是,那就是退回上一層呼叫。在多個程序時.如果有時要檢測上程序是否正常退出的.就要用到上個程序的返回值.
c程式是從main函式開始執行, 原型如下:
int main(int argc, char *argv);
include int main(int argc, char *argv)
c程式的終止分為兩種: 正常終止和異常終止.
正常終止分為: return, exit, _exit, _exit, pthreade_exit
異常終止分為: abort, signal, 執行緒響應取消
主要說一下正常終止的前4種, 即exit系列函式.
#include
void
exit(int status);
void _exit(int status);
#include
void _exit(int status);
以上3個函式的區別是:
exit()(或return 0)會呼叫終止處理程式和使用者空間的標準i/o清理程式(如fclose), _exit和_exit不呼叫而直接由核心接管進行清理.因此, 在main函式中exit(0)等價於return 0.
atexit終止處理程式:
iso c規定, 乙個程序最對可登記32個終止處理函式, 這些函式由exit按登記相反的順序自動呼叫. 如果同一函式登記多次, 也會被呼叫多次.
原型如下:
#include
int atexit(void (*func)(void));
其中引數是乙個函式指標, 指向終止處理函式, 該函式無參無返回值.
以下面的程式為例:
#include
static
void myexit1()
static
void myexit2()
int main()
執行結果:
$ ./a.out
main is done
first exit handler
first exit handler
second exit handler
執行結果:
$./a.out arg1 arg2 arg3
argv[0]: ./a.out
argv[1]: arg1
argv[2]: arg2
argv[3]: arg3
Linux 程序建立 程序終止
程序終止 fork 在linux中fork函式時非常重要的函式,它從已存在程序中建立乙個新程序。新程序為子程序,而原程序為父程序。include pid t fork void 返回值 自程序中返回0,父程序返回子程序id,出錯返回 1子程序複製父程序的pcb,因此複製了父程序的程式計數器,所以和父...
Linux程序終止訊號
sigterm 該訊號可由程序捕獲,使用該訊號讓程序有機會在退出之前做好清理工作,從而優雅地終止。sigint 當使用者按下中斷鍵 一般採用delete或ctrl c 時,終端驅動程式產生此訊號並傳送至前台程序組中的每乙個程序。sigkill 該訊號不能被程序捕捉和忽略,它向系統管理員提供了一種可靠...
Linux 程序的建立 等待與終止
使用fork函式來建立程序,它可以從已存在的程序中建立乙個新程序,新程序為子程序,原程序為父程序。程序呼叫fork,當控制轉移到核心中的fork 後,核心 程序建立的 執行結果 可以從結果看出新產生了乙個pid為4060的程序,這個程序就是子程序,pid為4059的程序是父程序,在子程序也進入到程序...