【发布时间】:2021-03-28 18:42:00
【问题描述】:
我的项目语言是 C,只会运行一个进程和多个线程。
一个线程总是崩溃,它会导致进程崩溃。
过程的稳定性是非常非常重要的。所以我想知道是否可以“隔离”这个线程。例如,如果我们可以截获 SIGSEGV 信号,我们就可以重启这个线程。
【问题讨论】:
标签: c multithreading process
我的项目语言是 C,只会运行一个进程和多个线程。
一个线程总是崩溃,它会导致进程崩溃。
过程的稳定性是非常非常重要的。所以我想知道是否可以“隔离”这个线程。例如,如果我们可以截获 SIGSEGV 信号,我们就可以重启这个线程。
【问题讨论】:
标签: c multithreading process
如果一个线程做了一些可能导致崩溃的事情,它可能会影响另一个线程,因为它们共享相同的内存空间,所以没有办法隔离它们。
您需要修复您的程序,使其一开始就不会崩溃。首先使用内存检查器,例如 valgrind。
【讨论】:
过程的稳定性非常重要。
那么找到并修复 SIGSEGV 的原因非常重要,而不是通过尝试恢复崩溃的线程来“掩盖裂缝”。
为什么?
【讨论】:
取决于崩溃的原因。它可能与内存相关,导致数据损坏,从而导致进程崩溃。 如果程序确实崩溃并且很严重,请使用 Monit 重新启动它。
【讨论】: