[root@archlinux xtricman]# ls -l /dev/pts
total 0
crw--w---- 1 xtricman tty 136, 0 Feb 24 19:24 0
c--------- 1 root root 5, 2 Feb 24 19:10 ptmx
[root@archlinux xtricman]# ls -l /mnt
total 12
brw-r--r-- 1 root root 136, 0 Feb 24 19:17 dev_node
crw-r--r-- 1 root root 136, 0 Feb 24 19:17 dev_node_c
drwx------ 2 root root 12288 Feb 24 19:12 lost+found
[root@archlinux xtricman]# exec 6<>/dev/pts/0
[root@archlinux xtricman]# exec 7<>/mnt/dev_node
bash: /mnt/dev_node: No such device or address
[root@archlinux xtricman]# exec 7<>/mnt/dev_node_c
bash: /mnt/dev_node_c: Input/output error
/dev/pts
devpts의 마운트 지점 /mnt
이자 ext4의 마운트 지점입니다.
/dev/pts/0
세 개의 장치 노드( , /mnt/dev_node
, ) /mnt/dev_node_c
의 주 장치 번호와 부 장치 번호가 동일한데 왜 하나만 열 수 있고 /dev/pts/0
나머지 두 개는 열 수 없는지 알고 싶습니다 .
(major=136,minor=0)에 대한 블록 장치가 존재하지 않는 것은 알지만, 문자 장치(major=136,minor=0)에 대한 "입/출력 오류"는 무엇을 의미합니까? 이 오류가 발생하는 이유는 무엇입니까?
답변1
글쎄, dev_node
그것은 블록 장치이므로( b
출력의 줄 시작 부분에 ls
나와 있음) 다른 장치와 완전히 다릅니다. 단지 동일한 메이저 번호를 가지고 있을 뿐 블록 번호와 문자 장치 번호 사이에는 상관 관계가 없습니다.
Documentation/admin-guide/devices.txt
이에 대한 내용은 Linux 커널 소스 코드에 설명되어 있습니다.
136 block Mylex DAC960 PCI RAID controller; ninth controller
0 = /dev/rd/c8d0 First disk, whole disk
아마도 Mylex RAID 컨트롤러가 없을 수도 있습니다.아홉그들에게는 이것이 No such device or address
적절한 대응처럼 보였습니다.
dev_node_c
당신과 똑같아 보이지만 /dev/pts/0
. 그러나 장치 노드는 /dev/pts
자동으로 생성되며 특별한 가상 파일 시스템( devpts
)을 갖습니다. 평소와 같이 다음 출력에 표시됩니다 mount
.
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
이것을 테스트했는데 실제로 거기에서 /dev/pts/15
다른 파일 시스템으로 장치 노드를 복사하는 것이 작동하지 않습니다. 또한 다른 복사본을 설치하면 다른 복사본에는 표시되지 않는 devpts
pseudo-tty를 사용하여 깨끗한 인스턴스가 생성되는 것 같습니다 . /dev/pts
따라서 의사 tty 노드가 devpts
파일 시스템의 특정 인스턴스와 연결되어 노드가 외부에서 작동하지 않는 것이 실제로 가능합니다.