programing

멀티 스레드 어플리케이션에서 errno를 안전하게 사용할 수 있는 방법이 있습니까?

newsource 2023. 10. 12. 23:20

멀티 스레드 어플리케이션에서 errno를 안전하게 사용할 수 있는 방법이 있습니까?

오류 유형을 나타내는 오류를 사용하는 시스템/라이브러리 호출을 사용하는 다중 스레드 응용 프로그램을 작성하는 경우, 오류를 안전하게 사용할 수 있는 방법이 있습니까?그렇지 않은 경우 오류가 발생한 것이 아니라 발생한 오류의 유형을 표시할 수 있는 다른 방법이 있습니까?

만약 당신의 표준 라이브러리가 멀티스레드를 인식한다면, 그것은 아마도#define변하는 것errno스레드-로컬 오류 반환 값을 반환하는 함수 호출로 이동합니다.그러나 이를 사용하려면 일반적으로 다음을 포함해야 합니다.<errno.h>, 의지하기 보다는extern선언.

바로 이 문제를 다루는 기사 Thread-safety and POSIX.1을 찾았습니다.

man errno다음과 같이 말합니다.

errno는 ISO C 표준에 의해 int 유형의 수정 가능한 l 값으로 정의되며 명시적으로 선언되어서는 안 되며 errno는 매크로일 수 있습니다.errno는 스레드 로컬입니다. 한 스레드에 설정해도 다른 스레드의 값에는 영향을 주지 않습니다.

언급URL : https://stackoverflow.com/questions/449778/is-there-a-way-to-use-errno-safely-in-a-multi-threaded-application