답변:
ioctl
/dev
출품작 과 손을 잡고 경향이있다 . 일반적인 코드는
fd=open("/dev/mydevice",O_RDRW);
ioctl(fd,.....);
이것은 완벽한 표준 유닉스 행동입니다. 커널 드라이버 안에는 액세스 제어를 할 수 있습니다 (예 : root
일부 작업 만 수행하거나보다 세밀한 액세스를 위해 특정 기능이 필요할 수 있음).
물론 이것은 장치가 블록 / 문자 읽기 / 쓰기 활동을 사용하는 것보다 훨씬 더 많이 노출 할 수 있음을 의미합니다. 많은 일들이 ioctl
전화 를 통해 이루어질 수 있습니다 . 그리 쉬운에서 아주 쉽게 쉘 스크립트에서 사용할 수 있지만,하기 C
또는 perl
또는 python
또는 유사한.
sysfs
항목은 드라이버와 상호 작용하는 또 다른 방법입니다. 일반적으로 각 명령 유형은 서로 다른 항목을 가지므로 드라이버 작성이 복잡 할 수 있지만 사용자 공간을 통해 쉽게 액세스 할 수 있습니다. 간단한 쉘 스크립트는 많은 것을 조작 할 수 있지만 매우 효율적이지 않을 수 있습니다
netlink
주로 네트워크 데이터 전송에 중점을두고 있지만 다른 용도로도 사용될 수 있습니다. 대량의 데이터 전송에 실제로 유용하며 ioctl
경우에 따라 후속 작업이 될 수 있습니다 .
모든 옵션이 좋습니다. 사용 사례는 드라이버에서 노출 할 인터페이스 유형을 더 잘 결정할 수 있습니다.