사용자 응용 프로그램과 통신하는 커널 모듈을 작성하고 있습니다 (ioctl
). 통신은 단방향 (즉, 정상적인 상황에서는 출력이 필요 없음)입니다. 내 질문은 - 사용자 응용 프로그램에 오류를 어떻게보고해야합니까?커널 모듈의 오류 처리
예를 들어, my 모듈은 프로세스 ID를 입력으로 받아들입니다. PID가 유효하지 않다고 가정 해 봅시다. errno.h
에 일치하는 오류 코드가 없으므로이를보고하는 다른 방법이 필요합니다.
- , 공통 헤더 파일에서 (양의) 일정
INVALID_PID
를 정의하는ioctl
호출의 반환 값으로-INVALID_PID
을 반환하고, 사용자 응용 프로그램에서 - 인쇄 의미를 그것을 처리 : 나는 여러 가지 방법을 생각할 수 커널 로그 메시지와 일반 오류 코드
ioctl
을 반환은 사용자 응용 프로그램에서 인수를 수신 - 나는 사용자 응용 프로그램 ,536과 일부 양방향 통신을 설정이
- 오류 메시지를 저장할 수 있습니다
표준 방법은 무엇입니까?
감사합니다.
고마워요! 그러나 "사용자 정의"메시지가 필요할 때 어떻게해야할지 아직 확실하지 않습니다. 어쩌면 나의 예가 지나치게 단순화되었을 수도 있습니다. 여러 가지 주장이 있거나 여러 가지 이유가있어 인수가 유효하지 않다고 생각되면 사용자에게 정확한 공감대를 알리고 싶습니다. – Benesh
@Benesh는 왜 사용자 지정 메시지가 필요한지 설명 할 수 있습니까? 'ioctl '은 커널에게 "이 파일 기술자와 관련된 일을하라"는 명령이다. 성공할 수도 있고 실패 할 수도있다. 실패하면 A, B 또는 C 이유로 실패합니다. 일반적인 오류 코드 세트가 다시 사용되는 이유입니다. 커널 코드는 일반적으로 스파르탄이며 "오류 메시지가 있습니다. 제공된 PID는 42이지만 PID 1, 2 및 3 만 허용합니다."와 같은 멋진 메시지를 반환하는 것은 중요하지 않습니다. 대신에 그것은 "EINVAL"을 말합니다. "PID를 올바르게 받으십시오!"와 더 비슷합니다. – Grapsus
'fd'는 통신을 가능하게하기 위해서만 사용됩니다. 전적으로 그것을 잘못 사용하고있을 수도 있지만,이 연습의 몇 가지 예를 보았습니다. 어쨌든, 당신의 충고를 따를 것입니다. 다시 한 번 감사드립니다! – Benesh