如何在程序程序終止時執行函式

2021-10-24 09:39:23 字數 1480 閱讀 2782

通過linux系統呼叫來完成這個操作,atexit( )on_exit( )

atexit( )函式原型:

#include

int atexit (

void

(*function)

(void))

;

示例:

#include

#include

#include

#include

static

void my_handler (

void

)int

main()

執行結果:

on_exit( )使用方法一樣。

函式原型:

#include

inton_exit

(void

(*function)

(int status,

void

*arg)

;

通過訊號終止程序時,上面註冊的函式執行於signal_handler( )之後。

示例:

#include

#include

#include

#include

static

void signal_handler (

int signo)

else

if(signo == sigterm)

printf

("caught sigterm!\n");

else

exit

(exit_success);}

static

void my_handler (

void

)int

main()

if(signal (sigterm, signal_handler)

== sig_err)

if(signal (sigprof, sig_dfl)

== sig_err)

if(signal (sighup, sig_ign)

== sig_err)

for(;;

)pause()

;printf

("test atexit!\n");

return0;

}

執行結果(通過ctrl+ckill pid方式終止程序)

終止程序的執行

問題 1 執行 sleep 600 命令 2 再開乙個終端,查出sleep程式的pid並殺死 3 執行多個xsnow程式並都放入後台 4 殺死所有xsnow程序 5 su切換為zhangsan使用者 6 再開乙個終端,強制踢出zhangsan使用者 方案殺死程序的命令一般有kill killall ...

LINUX 終止程序的執行

問題 1 執行 sleep 600 命令 2 再開乙個終端,查出sleep程式的pid並殺死 3 執行多個xsnow程式並都放入後台 4 殺死所有xsnow程序 5 su切換為zhangsan使用者 6 再開乙個終端,強制踢出zhangsan使用者 方案殺死程序的命令一般有kill killall ...

Linux 終止程序的執行

1 執行 sleep 600 命令 2 再開乙個終端,查出sleep程式的pid並殺死 3 執行多個xsnow程式並都放入後台 4 殺死所有xsnow程序 5 su切換為zhangsan使用者 6 再開乙個終端,強制踢出zhangsan使用者 方案 殺死程序的命令一般有kill killall pk...