Я - дурачок C и работаю над проектом C, который попросил меня написать обработчик сигнала для перехвата сигнала SIGSEGV и выполнения некоторых операций.
По сути, основная программа будет пытаться получить доступ к фрагменту памяти, которыйне может быть прочитан или записан.Когда основная программа обращается к этому куску памяти, она поднимает сигнал SIGSEGV, и в моей функции обработчика сигналов я улавливаю сигнал и использую mprotect () для преобразования этого куска памяти в читаемый и записываемый.
Но я не знаю, есть ли способ получить адрес, который вызвал SIGSEGV, когда сигнал перехватывается моим обработчиком сигнала.Я не могу ничего сделать, если у меня нет фактического адреса, который вызвал SIGSEGV.И мне не разрешают захватывать адреса с основного в мой обработчик сигналов.
Может кто-нибудь помочь мне?Спасибо!