Обработка исключений в LinuxLinux

Ответить
Anonymous
 Обработка исключений в Linux

Сообщение Anonymous »

Я изучал обработку исключений в Linux. Мне известен (до некоторой степени) механизм сигналов, используемый Linux для уведомления процессов SIGSEGV, SIGFPE, SIGINT и т. д. Чтобы перехватить эти сигналы, их необходимо явно зарегистрировать с помощью sigaction.
Мои вопросы:
  • Существует ли универсальный обработчик исключений? Используя механизм сигналов, мне нужно явно зарегистрироваться для получения сигналов. Но я хочу перехватывать все сигналы и гарантировать, что везде, где я могу, я покажу пользователю сообщение, и приложение просто не закроется. И получить несколько журналов для диагностики. В Windows есть универсальный обработчик исключений, установленный с помощью SetUnhandledExceptionHandler. Есть ли в Linux что-то подобное?
  • Из того, что я прочитал до сих пор, сигналы кажутся единственным способом перехвата исключений (например, SIGINT, SIGSEGV, SIGFPE и т. д.). Если мне нужно использовать сигналы, каким должно быть поведение? Если основной поток вызывает SIGSEGV, то он застрянет в цикле (код, который вызвал обработчик исключений SIGSEGV ), и смогу ли я показать какое-то сообщение пользователю? Если рабочий поток (созданный приложением) попадает в SIGSEGV, то я намереваюсь завершить рабочий поток (поэтому избегая цикла) и дать сигнал основному потоку показать сообщение пользователю и корректно завершить работу.
Я собираюсь использовать GTK для пользовательского интерфейса приложения (включая экран сообщений). Я ищу рекомендуемый Linux способ обработки исключений и корректного выхода, чтобы обеспечить удобство работы с пользователем.

Подробнее здесь: https://stackoverflow.com/questions/791 ... g-in-linux
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»