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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 进程开始与终止

發(fā)布時間:2023/12/9 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 进程开始与终止 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

exit(0) 表示程序正常退出;
exit(1)/exit(-1) 表示程序異常退出;
exit() 結(jié)束當(dāng)前進(jìn)程/當(dāng)前程序/,在整個程序中,只要被調(diào)用就結(jié)束,返回參數(shù)值;
return() 是當(dāng)前函數(shù)返回,當(dāng)然如果是在主函數(shù)main, 自然也就結(jié)束當(dāng)前進(jìn)程了,如果不是,那就是退回上一層調(diào)用。在多個進(jìn)程時.如果有時要檢測上進(jìn)程是否正常退出的.就要用到上個進(jìn)程的返回值.

進(jìn)程開始:

C程序是從main函數(shù)開始執(zhí)行, 原型如下:
int main(int argc, char *argv[]);

include <stdio.h>int main(int argc, char *argv[]) {int i;for (i = 0; i < argc; i++)printf("argv[%d]: %s\n", i, argv[i]);return 0; }

進(jìn)程終止:

C程序的終止分為兩種: 正常終止和異常終止.
正常終止分為: return, exit, _exit, _Exit, pthreade_exit
異常終止分為: abort, SIGNAL, 線程響應(yīng)取消

主要說一下正常終止的前4種, 即exit系列函數(shù).

#include <stdlib.h> void exit(int status); void _Exit(int status); #include <unistd.h> void _exit(int status);

以上3個函數(shù)的區(qū)別是:
exit()(或return 0)會調(diào)用終止處理程序和用戶空間的標(biāo)準(zhǔn)I/O清理程序(如fclose), _exit和_Exit不調(diào)用而直接由內(nèi)核接管進(jìn)行清理.因此, 在main函數(shù)中exit(0)等價于return 0.

atexit終止處理程序:
ISO C規(guī)定, 一個進(jìn)程最對可登記32個終止處理函數(shù), 這些函數(shù)由exit按登記相反的順序自動調(diào)用. 如果同一函數(shù)登記多次, 也會被調(diào)用多次.
原型如下:

#include <stdlib.h> int atexit(void (*func)(void));

其中參數(shù)是一個函數(shù)指針, 指向終止處理函數(shù), 該函數(shù)無參無返回值.

以下面的程序為例:

#include <stdlib.h>static void myexit1() {printf("first exit handler\n"); }static void myexit2() {printf("second exit handler\n"); }int main() {if (atexit(my_exit2) != 0)printf("can't register my_exit2\n");if (atexit(my_exit1) != 0)printf("can't register my_exit1\n");if (atexit(my_exit1) != 0)printf("can't register my_exit1\n");printf("main is done\n");return 0; }運行結(jié)果: $ ./a.out main is done first exit handler first exit handler second exit handler運行結(jié)果: $./a.out arg1 arg2 arg3 argv[0]: ./a.out argv[1]: arg1 argv[2]: arg2 argv[3]: arg3

總結(jié)

以上是生活随笔為你收集整理的linux 进程开始与终止的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。