나는이 두 가지 방법으로 두 통화 :errno 값을 설정하는 방법은 무엇입니까?
void func1()
{
// do something
if (fail)
{
// then set errno to EEXIST
}
}
그리고 두 번째 방법 : 나는 어떤 값으로 errno
을 설정하면
void func2()
{
// do something
if (fail)
{
// then set errno to ENOENT
}
}
, 그것은 무엇을합니까? 그냥 오류 검사?
어떻게 그것은 일반적으로 비록 당신이 (전역 변수처럼
errno
을 치료할 수 위의 방법func1
에errno
및func2
EEXIST
및ENOENT
감사
모든 실제적인 목적을 위해
일반적으로 시스템 오류 *를보고 할 때는'errno'가 사용됩니다. 라이브러리 또는 코드가 시스템의 일부라고 생각하십니까? 그렇지 않은 경우 다른 메커니즘을 사용하여 오류를보고하십시오. –
필연적으로, strtol()과 같은 유틸리티 함수는 ERANGE를 반환하는 것처럼 보입니다. 예를 들어, 실제로는 _ 시스템 오류가 아닙니다. – proteus
errno를 설정하는 것이 적절한 장소의 예는 funopen()에 전달 된 읽기 또는 쓰기 함수 콜백에 있습니다. 이 경우 구현은 시스템 호출 (read() 또는 write())과 일치해야하므로 오류가 발생하면 -1을 반환하고 특정 오류로 errno를 설정하는 것이 좋습니다. – orpheist