Przenośny sposób na wychwytywanie sygnałów i zgłaszanie problemu użytkownikowi
Jeśli jakimś cudem w naszym programie wystąpi błąd, chcę złapać SIGSEGV i pozwolić użytkownikowi (być może klientowi GUI) z jednym kodem powrotu na wystąpienie poważnego problemu. Jednocześnie chciałbym wyświetlić informacje w wierszu poleceń, aby pokazać, który sygnał został złapany.
Dzisiaj nasz program obsługi sygnału wygląda następująco:
<code>void catchSignal (int reason) { std :: cerr << "Caught a signal: " << reason << std::endl; exit (1); } </code>
Słyszę krzyki przerażenia z powyższym, jak przeczytałem z tegowątek że złem jest nazywanie funkcji nie-reentrantowej z obsługi sygnału.
Czy istnieje przenośny sposób obsługi sygnału i dostarczania informacji użytkownikom?
EDYTOWAĆ: Lub przynajmniej przenośny w ramach POSIX?