멀티 스레드 어플리케이션에서 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
'programing' 카테고리의 다른 글
Angularjs 데이터 저장소 모범 사례 (0) | 2023.10.17 |
---|---|
JSLint 메시지:미사용변수 (0) | 2023.10.12 |
Android 재료 디자인 버튼 스타일 (0) | 2023.10.12 |
SQL 파일에 둘 이상의 프로시저를 작성하시겠습니까? (0) | 2023.10.12 |
Swift 컴파일러 오류: 'Double'을(를) CGFloat으로 변환할 수 없습니다. (0) | 2023.10.12 |