gpt4 book ai didi

c++ - C++ 中的崩溃处理程序

转载 作者:太空宇宙 更新时间:2023-11-04 04:01:19 25 4
gpt4 key购买 nike

我有一个守护进程实用程序,我需要运行它而不会崩溃。我知道我可以注册信号并跳过除 SIGKILL 之外的所有信号,我也在我的应用程序中这样做了。

我的守护进程是多线程的,我想知道是否由于线程中的某些代码而引发了 SIGABRT 信号,该线程会退出..?或者如果我跳过 SIGABRT 信号,该线程将继续运行..?

假设我的应用上次因为这个错误而崩溃

*** error for object 0x101800068: incorrect checksum for freed object - object was probably modified after being freed.

如果我的线程不退出并且会产生任何问题,我可以保持它运行吗?

我希望我的应用程序无论如何都能继续运行。我希望我的应用程序从错误中恢复,例如进程重新启动。如果我可以在崩溃信号期间退出除 main() 之外的所有线程并重新启动所有线程,那就更好了。但据我注意到,线程在信号期间没有退出。我怎样才能让所有线程在这些信号期间退出,以便我可以重新启动它们..?

最佳答案

[评论太长]

在某些情况下,线程会被迫停止运行,如果一个线程停止运行,则整个程序都会停止运行。就是这样。

这对于进程来说是不同的。

因此,构建更强大的多任务系统的一种方法是使用进程而不是线程,让每个进程受到另一个进程的监督并在崩溃时重新启动。当然,后者也可以受到监督并在崩溃时重新启动,这反过来也可以......

好吧,也许生成/编写不会崩溃的代码可能会更有效。

关于c++ - C++ 中的崩溃处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22867967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com