Piszę program Windows na Linuksie. Mój program używa strukturalnej obsługi wyjątków systemu Windows (SEH). Linux nie obsługuje strukturalnej obsługi wyjątków, jednak zapewnia obsługę sygnałów. Możemy przesłonić sygnał, aby stworzyć paradygmat podobny do SEH.Obsługa wyjątków w Linuksie
Gdy jesteś w stanie filtrować wyjątek systemu Windows zapewnia trzy alternatywy przepływy kontroli wykonania:
1) EXCEPTION_EXECUTE_HANDLER: Wykonanie obsługi 2) EXCEPTION_CONTINUE_SEARCH: przekazanie wyjątek od następnego bloku (jeśli nie istnieje następnie OS) 3) EXCEPTION_CONTINUE_EXECUTION: Kontynuuj wyjątek od instrukcji, w której wystąpiło przerwanie.
W jaki sposób mogę uzyskać te przepływy sterowania w systemie Linux. W Linuksie po obsłużeniu sygnału program rozpoczyna wykonywanie od miejsca, w którym został przerwany. Jak rozwinąć paradygmaty continue_search i execute_handler?
góry dzięki
Dziękuję za odpowiedź. – Utkarsh
Używam języka C++. Może być wymagane wyodrębnienie tej funkcji i utworzenie pliku obiektu współużytkowanego. Obawiam się również, czy mogę obsługiwać przetwarzanie sygnałów w ramach biblioteki współdzielonej. Co więcej, jeśli twórca aplikacji przesłonił sygnał innym programem obsługi. – Utkarsh
Przeczytałem abou sigaction. Jak już wspomniano, przywraca kontrolę do miejsca, w którym zostało przerwane. Wymagam jednak również przeskoku/wykonania określonego kodu z pominięciem istniejącego przepływu (wykonaj blok catch i kontynuuj wyszukiwanie w powyższych blokach). Nie wiem, jak osiągnąć tę funkcję. – Utkarsh