我有一个守护进程工具,我需要在没有崩溃的情况下运行。我知道我可以注册信号并跳过除SIGKILL之外的所有信号,我也在我的应用程序中也这样做了。
我的守护进程是多线程的,我想知道是否由于线程中的某些代码而引发了SIGABRT信号,该线程是否会退出..?或者,如果我跳过SIGABRT信号,该线程将继续运行..?
假设我的应用因为此错误而上次崩溃
*** error for object 0x101800068: incorrect checksum for freed object - object was probably modified after being freed.
我是否可以保持我的线程运行,如果它没有退出并且会产生任何问题..?
我希望我的应用程序无论如何都能继续运行。我希望我的应用程序从错误中恢复,如进程重启。如果我可以退出所有线程,除了我的main()在崩溃信号期间并重新启动所有线程,它会更好。但据我所知,线程在信号期间没有退出。如何让我的所有线程在这些信号中退出,以便我可以重启它们??
答案 0 :(得分:0)
[评论太久了]
有些情况下线程被强制关闭,如果一个线程发生故障,整个程序就会关闭。就是这样。
这与流程不同。
因此,构建更强大的多任务系统的一种方法是使用进程而不是线程,让每个进程受到另一个进程的崩溃监督和重启。 cource的后者也可以在崩溃时进行监督和重新启动,这反过来也可能是......
好吧,也许生成/编写不会崩溃的代码可能更有效。