우리는 현재 다양한 센서에 대한 데이터 시각화 시스템을 구축하기 위해 노력하고 있습니다.
Linux 애플리케이션 개발을 가능하게 하려면 장치 드라이버와 하드웨어 설계가 아직 완료되지 않았기 때문에 다양한 문자 장치의 동작을 시뮬레이션해야 합니다.
그렇다면 특정 파일(예: 사용자 공간에서도 실행되는 C 프로그램)에 대한 시스템 호출을 수신할 수 있는 방법이 있습니까?
read()
(Userspace Application/Database) <========= (~/mydev) <===== (dummy_driver)
답변1
당신이 사용할 수있는쿠사이 사용자 공간의 문자 장치이것은퓨즈라이브러리는 대부분의 시스템에서 패키지로 제공됩니다. "드라이버"의 예는 다음과 같습니다.kus.c. 이 예제를 컴파일하고 실행하면 다음과 같습니다.
sudo ./cuse -f --name=mydevice
/dev/mydevice
모든 열기, 닫기, 읽기, 쓰기, ioctl 호출을 생성 하고 수신합니다. 퓨즈 용어로 장치를 "제거"하려면 프로세스를 종료하면 됩니다.
아직 예제가 배포되지 않았을 수 있으므로 컴파일, 다운로드(또는 git clone)압축, 디렉터리로 전환 libfuse/example
하고 C 파일에 표시된 대로 컴파일합니다.
gcc -Wall cuse.c $(pkg-config fuse --cflags --libs) -o cuse -I.
fuse-devel
이 작업을 수행하려면 패키지나 이와 유사한 패키지를 설치해야 할 수도 있습니다 . 더 많은 ioctl을 구현해야 하는 경우 다음을 확인하세요.협회주어진답변에 대한 의견으로이 하나스택 교환질문.
고려해야 할 더 간단한 대안은 pseudo-tty입니다.푸티, 또는터미널 0 터미널두 개의 직렬 포트를 함께 연결하는 커널 모듈입니다.