linux c开发: 在程序退出时进行处理

linux c开发: 在程序退出时进行处理,第1张

有时候,希望程序退出时能进行一些处理,比如保存状态,释放一些资源。c语言开发的linux程序,有可能正常退出(exit),有可能异常crash,而异常crash可能是响应了某信号的默认处理。这里总结一下这些情况,如何获取一个统一的退出处理的点,说白了就是写一个回调函数,让他在程序正常或异常退出时调用。

这个例子里面其实是将异常退出处理和正常退出处理结合起来了。对于SIGTERM(即kill进程)和SIGINT(即ctrl-c结束前台进程),我们当做是正常退出,在其信号处理函数里面,直接调用了exit(0),而exit(0)又会被server_on_exit捕获到。对于异常退出也是类似,只是调用了exit(-1)表示是异常的。同时异常退出我们会打印出当前的进程堆栈信息,server_backtrace的实现下一篇再说。另外注意的是SIGKILL信号是无法捕获的。而调用abort导致的退出,也是通过SIGABRT信号捕获到进行处理了。其他几种异常退出的信号也是比较常见,一并捕获到进行处理。这样对于异常退出,我们即可统一的log堆栈信息,又可直接继续正常退出时的处理流程了。

具体 *** 作步骤如下:

1、首先打开linux终端,运行一段Python程序:

2、然后在程序运行中,需要终止程序运行时,按下快捷键crtl+c就可以终止指令程序,此时运行的这段python程序就被终止了。所有的指令都可以用这个快捷键终止运行:

3、最后再次运行一下刚才的程序,这里直接使用Ctrl+ Z快捷键终止运行程序是可以达到同样的效果的:

xkill应用程序可以帮助你快速杀死你的桌面上的任何图形窗口。

1、通过按下Ctrl + Alt + Esc键可激活此快捷方式。您的光标会变成一个X.点击窗口与xkill功能来确定哪些进程与该窗口关联,然后立即杀掉该进程。该窗口将瞬间关闭。

2、Linux桌面有一个工具system monitor,它的工作方式类似于Windows任务管理器,打开系统监视器工具查看运行进程列表,可以强制关闭它们。

3、从终端关闭。比方说,Firefox是在后台运行,我们希望从终端杀死它。您可以运行如下命令:grep firefox这将列出所有的进程,你只要kill对应的进程就可以了

4、killall命令就像pkill的,但有点更精确。 它会杀了具有特定名称的所有正在运行的进程。 因此运行killall firefox所有运行的火狐进程


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/8788456.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存