0
A
回答
4
您可以通過設置向上的信號處理(見signal(3)
)處理SIGTERM
和SIGINT
信號,但是你不能手柄SIGKILL
,這就是爲什麼它應該是最後的手段來對付一個程序。
如果您始終想在流程退出前執行某些操作,請參閱atexit(3)
。
$ cat sig.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
static void closedown() {
printf("running closedown\n");
}
static void sighandler(int signal) {
exit(1);
}
int main(int argc, const char **argv) {
signal(SIGTERM, sighandler);
signal(SIGINT, sighandler);
atexit(closedown);
while (1) {
sleep(1);
printf("tick\n");
}
return 0;
}
$ clang -o sig sig.c
$ ./sig
tick
tick
^Crunning closedown
相關問題
- 1. Supervisord-在啓動應用程序/程序之前執行命令
- 2. Javascript函數在被調用之前執行
- 3. 在任何函數執行之前執行一個函數
- 4. 其他應用程序在我的應用程序之前獲取消息
- 5. 如何在執行MATLAB內置函數之前顯示消息
- 6. 在web請求之前執行函數
- 7. Java:在強制執行程序之前打印消息
- 8. 控制檯應用程序在執行回調之前退出
- 9. 在執行主窗口窗體應用程序類之前執行其他類
- 10. 在DidSelectAtRow函數之前執行的Segue正在執行
- 11. 所有代碼的函數之前不執行被稱爲
- 12. 在Angular2中執行函數之前獲取可觀察值
- 13. 在渲染express之前執行函數獲取路由器NodeJS
- 14. 當Flex 3應用程序執行完成時執行函數
- 15. 如何在Python中執行函數之前執行預檢查?
- 16. C程序執行命令之前被告知
- 17. Sys.sleep()之前沒有執行的函數()
- 18. Render()之前的ASP.NET執行函數
- 19. 執行應用程序關閉執行程序應用程序
- 20. future.get在最終在Callable上執行之前返回取消
- 21. iOS:在應用程序已被使用之前跳過ViewControllers
- 22. 在調用函數之前執行異步調用
- 23. 如何在Ext.FormPanel成功提交數據之前確保函數不被執行?
- 24. 在繼續執行之前讓MATLAB程序等待事件的函數
- 25. 如何在我的應用程序崩潰之前運行函數? iOS
- 26. 在函數結束前執行函數
- 27. 如何在mercurial commit之前執行命令行應用程序(bat)?
- 28. 在應用程序執行之間保留數據
- 29. 等待取消的任務在繼續執行之前完成
- 30. PHP在前代函數完成之前繼續執行代碼
工程就像一個魅力。非常感謝! – frdmn