Вы хотите выполнить очистку после SIGSEGV (то есть серьезной ошибки) ... Я нахожу это немного странным, потому что: 1) если вы отлаживали приложение, вы должны оставить все нетронутым для сохранения в основном файле, чтобы вы могли точноопределить, что произошло, и 2) если у вас есть приложение для выпуска клиента (скажем), ну ... оно не должно быть SIGSEGV :) (в любом случае, это не моя проблема, просто говорю ..)
По теме,
Я думаю, вы можете попытаться заблокировать SIGSEGV во всех потоках, кроме той, в которой вы пытаетесь выполнить очистку;это должно заставить ОС доставить сигнал этому конкретному потоку.Другое решение, о котором я мог подумать, это что-то вроде setjmp () / longjmp () (хотя я и не проверял ни одного из них).
Будьте осторожны, когда ваша программа получит SEGV, вы попадаете в шаткое положение (т. Е. Ваша очистка может также не сработать и генерирует еще один SEGV и т. Д.), Поэтому вам следует подумать о сбое ядра.