2010-05-16 5 views
2

나는 ctypes를 사용하여 파이썬에서 호출 된 일부 C 코드로 작업하고있다. C 라이브러리의 어딘가에 예외가 발생하거나 abort()가 호출되고 있습니다. 내 파이썬 호출자 코드에서 이것을 잡을 수있는 방법이 있습니까? (플랫폼은 Linux 임)ctypes에서 throw 된 예외를 잡는 방법은 무엇입니까?

답변

3

abort()로 인한 신호를 처리하기 위해 SIGABRT에서 신호 처리기를 설정할 수 있습니다. 그러나 실패한 어설 션은 손상된 메모리 및 기타 나쁜 일과 함께 진행될 수 있습니다. 일반적으로 어설 션이 실패한 이유가 있습니다. 따라서 대개 응용 프로그램을 종료하는 것이 최선의 방법입니다 (종료하기 전에 처리기에서 오류를 표시/로깅하는 것을 제외하고).

+0

파이썬 신호 모듈을 사용하면 ctypes를 통해 호출 된 C 라이브러리로부터 신호를받은 SIGABRT를 트랩 할 수 있습니까? – PaulMcG

+1

나는 지금 이것을 시도하고, 내 C 코드에서 abort()를 호출하면 SIGABRT가 파이썬의 처리기에 전달되지 않는다. 그래서 C 코드에서도 시그널 핸들러를 설정해야합니다. 팁 주셔서 감사! – PaulMcG

+0

@Paul McGuire, 나는 또한이 문제에서 직면 한 것과 동일한 문제에 직면하고 있습니다. 그럼 내가 어떻게 해결할 수 있는지 알려주시겠습니까? 코드 스 니펫이나 예제는 높이 평가됩니다. 미리 감사드립니다. –