C 프로그램의 입력을 받아들이는 가짜 장치 파일을 만드는 방법은 무엇입니까?

C 프로그램의 입력을 받아들이는 가짜 장치 파일을 만드는 방법은 무엇입니까?

/dev/input/js0게임패드( )에서 입력을 받아 처리한 다음 이를 가짜 장치 파일(char)로 보내는 C 프로그램을 만들고 싶습니다.또는블록) 키보드로 표시됨(아, 또 뭐야?키보드용 장치 파일? 이것이 가능한지, 가능하다면 어떻게 가능한지 알고 싶습니다.

답변1

ls -al /dev내 시스템에서 발췌한 명령을 자세히 살펴보십시오.

brw-rw----  1 root floppy    8,   0 Jun  7 19:55 sda
brw-rw----  1 root floppy    8,   1 Jun  7 19:55 sda1
brw-rw----  1 root floppy    8,   2 Jun  7 19:55 sda2
brw-rw----  1 root floppy    8,   3 Jun  7 19:55 sda3
brw-rw----  1 root floppy    8,   5 Jun  7 19:56 sda5
brw-rw----  1 root floppy    8,   6 Jun  7 19:56 sda6
brw-rw----  1 root floppy    8,   7 Jun  7 19:56 sda7
brw-rw----  1 root floppy    8,   8 Jun  7 19:57 sda8
brw-rw----  1 root floppy    8,  16 Jun  7 19:55 sdb
brw-rw----  1 root floppy    8,  32 Jun  7 19:55 sdc
brw-rw----  1 root floppy    8,  33 Jun  7 19:55 sdc1
brw-rw----  1 root floppy    8,  34 Jun 11 10:39 sdc2
brw-rw----  1 root floppy    8,  35 Jun  7 19:56 sdc3

그룹 ID 뒤, 날짜 앞의 두 숫자는 장치 파일의 메이저 번호와 마이너 번호입니다. 이는 기본적으로 장치의 "유형"입니다. 이 예에서 8은 SCSI(또는 에뮬레이트된 SCSI) 디스크 드라이브입니다.

http://lxr.linux.no/linux/Documentation/devices.txt모든 메이저 및 마이너 번호의 새로운 목록은 아닙니다. 최신 버전 목록이 공식적으로 어디에 있는지 확실하지 않습니다.

어쨌든 이러한 파일은 mknod명령( 블록, 문자의 mknod [OPTION]... NAME TYPE [MAJOR MINOR]일부 유형 )을 사용하여 생성됩니다. 시스템 호출 도 있습니다 . 기존 장치와 동일한 주/부로 다른 파일을 만드는 것이 무엇을 의미하는지 잘 모르겠습니다.bcmknod()

uinput설명에 설명된 대로 이것이 여러분이 찾고 있는 것일 수 있지만, PC 하드웨어에서는 /dev/psaux시스템이 충분히 오래된 경우 PS/2 포트에 직접 읽기/쓰기가 가능합니다. USB 키보드를 어디서부터 시작해야 할지조차 알 수 없습니다...

가짜 장치 파일을 원하고 여기에 보내는 데이터가 어떻게 되는지 신경 쓰지 않는다면 항상 /dev/zero.

관련 정보