이 문제를 처리하는 드라이버를 개발 한 개발자는 성공을 위해 어떤 값을 반환할지 결정합니다. ioctl
일반적으로 0
은 모든 것이 올바르게되었다는 것을 의미합니다. 이 규칙은 오랫동안 UNIX 시스템에서 사용되었습니다.
어쨌든이 파일 디스크립터에 대한 문서를 읽고이 파일 디스크립터가 처리하는 특정 시스템 호출의 가치를 알아야합니다.
두 번째 질문에 대해서는 =
연산자가 할당 후 변수의 새 값을 반환합니다. 따라서 할당 연산자로 0이 아닌 값이 반환되면 표현식의 반환 값 (이 경우 ioctl
의 경우 int
)은 ~ true
으로 암시 적으로 계산됩니다.
대부분의 경우 0이 아닌 음수 인 값은 잘못된 실행을 의미합니다. 경우에 따라 read
또는 write
시스템 호출과 같이 UNIX 시스템 호출은 양수 값을 반환합니다. read
및 write
시스템 호출의 경우 양수 반환 값은 읽거나 쓴 바이트 수를 의미합니다.
ioctl
이 반환 값이 양수이면 결과가 정상적으로 처리 될 수 있으며이 특정 파일 설명자가 나타내는 값의 상태 인을 반환 할 수 있습니다. 다시 한 번, 설명서를주의 깊게 읽으십시오.
그래서, 아래 코드 :
if (error = ioctl(get_card_fd(card_ref), CARD_SETVERSION, &context)) {
return EXIT_FAILURE;
}
값이 0 true
로 평가되고 우리는 코드의 조건부 블록을 입력합니다.
1) 번호 읽기 : http://man7.org/linux/man-pages/man2/ioctl.2.html 2) 'ioctl'이 0과 다른 값을 반환하는 경우 "true"로 평가됩니다. – AntonH
@AntonH 당신은 대답으로 게시해야합니다 :) –
@JesusRamos 그래야하지만 짧은/빠른 대답이기 때문에, 나는 대답의 낭비라고 생각합니다. 나는 많은 평판을 잃는다 : D – AntonH