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

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

/dev/input/js0조이패드( )에서 입력을 받아 처리한 후 가짜 장치 파일(문자)로 보내는 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], 일부 유형은 b블록용, c문자용)으로 생성됩니다. 시스템 호출 도 있습니다 mknod(). 기존 장치와 동일한 주/부로 다른 파일을 만드는 경우의 의미를 완전히 알지 못합니다.

uinput의견에 설명된 대로 아마도 당신이 찾고 있는 것일 것입니다. 하지만 PC 하드웨어에는 /dev/psaux시스템이 PS/2 포트를 가질 만큼 오래되었을 경우 PS/2 포트에 직접 읽고 쓸 수 있는 기능이 있습니다. USB 키보드는 어디서부터 시작해야 할지조차 알려주지 못했습니다...

가짜 장치 파일을 원하고 해당 파일로 보내는 데이터가 어떻게 되는지 신경 쓰지 않는다면 항상 /dev/zero. 또한 이 경우 심볼릭 링크는 매우 간단한 솔루션이 될 수 있습니다.

관련 정보