У меня есть Приложение A (от какой-то компании X). Это приложение позволяет мне расширять функциональность, позволяя мне писать свои собственные функции.
Я приказываю Приложению A вызывать мои пользовательские функции в файле конфигурации Приложений A (таким образом он знает, что Appl A должен вызывать пользовательские Функции). Приложение A использует указатели функций, которые я должен зарегистрировать в приложении A перед вызовом своих пользовательских функций.
Если в моих пользовательских функциях, написанных пользователем, есть ошибка или сбой в работе, приложение А перестанет работать. Например, если у меня ошибка сегментации в моих пользовательских функциях.
Таким образом, Приложение A загрузит мою пользовательскую функцию из общего DLL-файла. Это означает, что мои пользовательские функции будут работать в приложении A 'Адресное пространство процесса.
Я хочу обработать определенные сигналы, такие как ошибка сегментации, деление на ноль и переполнение стека, но приложения A имеют для этого свои собственные обработчики сигналов,
Как я могу написать свои собственные обработчики сигналов для перехвата исключений в моих пользовательских функциях, чтобы я мог изящно очиститься, не затрагивая большую часть Приложения A? Поскольку мои пользовательские функции будут вызываться в процессе приложений A, ОС будет вызывать обработчики сигналов, написанные в приложении A, а не мои пользовательские функции.
Как я могу это изменить? Я хочу, чтобы ОС вызывала обработчики сигналов, записанные в моих функциях, но только для сигнала, генерируемого моими функциями, который является асинхронным по своей природе.
Примечание. У меня нет исходного кода Приложения A, и я не могу внести в него какие-либо изменения, поскольку он контролируется другой компанией.
Я буду использовать C и только C на платформах Linux, Solaris и, вероятно, Windows.