應用程序如何發現它剛剛開始終止?我可以使用信號處理程序嗎?如何檢測C/Linux中的程序終止?
回答
啓用atexit()
。當程序正常結束時它會調用一個函數。
示例代碼:
#include <stdio.h>
#include <stdlib.h>
void funcall(void);
void fnExit1 (void)
{
printf ("Exit function \n");
}
int main()
{
atexit (fnExit1);
printf ("Main function start\n");
funcall();
printf ("Main function end\n");
return 0;
}
void funcall(void)
{
sleep(2);
exit(0);
}
輸出:
Main function start
Exit function
atexit()在應用程序中的所有線程被終止後運行? –
@LunarMushrooms是的 – sujin
你可以嘗試--->
int raise (int sig)
當SIGTERM
或SIGKILL
提高處理!
我想捕捉自我終止(不僅僅是根據另一個進程的請求)。例如,按Ctrl + \,Ctr + C或斷言,崩潰等等。所以SIGTERM和SIGKILL不是唯一需要處理的信號。我需要一個能處理所有情況的地方。 –
您還可以註冊在退出進程時調用的函數。請參閱man atexit
您可以爲SIGINT,SIGKILL和SIGSEGV安裝信號處理程序。在信號處理程序中,您可以進行堆棧轉儲,以便稍後調試您的應用程序。在信號處理程序中,將SIGINT,SIGKILL和SIGSEGV的處置設置回默認值。
- 1. 檢測程序終止(C,Windows)
- 2. 如何檢測應用程序即將終止?
- 3. 如何檢測WDM驅動程序中的會話創建/終止?
- 4. win32進程終止檢測:WMI與WaitForSingleObject
- 5. 使用C++,如何檢測終止之前的進程
- 6. 如何在c中終止程序?
- 7. 如何在Python中終止程序?
- 8. 如何在Java中終止程序?
- 9. 如何檢測React Native App的應用程序終止(尤其是Android)?
- 10. 如何檢查線程是否終止?
- 11. 如何在Linux終端應用程序中檢測XOFF和XON
- 12. 如何檢查Linux進程以確定進程何時/何時終止/終止?
- 13. 檢測應用程序終止與反應原生
- 14. 粉碎堆棧檢測程序終止在c
- 15. iOS - 用戶終止應用程序時檢測推送通知
- 16. 控制檯應用程序關閉/終止時檢測?
- 17. 如何讓我的Java程序終止?
- 18. 如何終止程序開始的ShellExecute
- 19. 如何檢測股票音樂應用程序是否已終止?
- 20. 如何檢測非託管的應用程序已經中止
- 21. 如何檢測進程或應用程序是否正在運行並終止程序如果它不是
- 22. 如何檢測應用程序在由`forever`管理時在應用程序中終止?
- 23. 父進程在C#中終止時如何終止子進程
- 24. C++程序終止
- 25. 終止scala程序?
- 26. 程序終止accept()
- 27. C程序終止
- 28. 程序,不終止
- 29. 如何檢測錯誤而不是讓Rust程序中止?
- 30. 阻止程序終止的線程
是的,除非它是由KILL信號終止。看看手冊中的「信號」('man signal') – BRFennPocock
您應該使用'sigaction'來代替它,因爲它更便於攜帶。 –