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