man mknod
리눅스 에서 :
c, u create a character (unbuffered) special file
왜 같은 기능에 문자가 2개 있나요? 미묘한 차이점이 있나요, 아니면 완전히 비슷하나요?
답변1
적어도 Linux에서는 동일합니다.
나는 먼저 다음을 보고 이 결론에 도달했습니다.소스 코드mknod(1)
내부에GNU 핵심 도구, 현재 버전의 라인 217에서 동일한 상황이 처리되어 동일한 장치 유형을 얻는다는 것을 알 수 'c'
있습니다 'u'
. 이 S_IFCHR
값은 Linux 커널 헤더 파일에 정의되어 있지만 값은 중요하지 않습니다. 중요한 것은 파일 시스템의 개발 노드에도 동일한 값이 저장된다는 점입니다.
저는 간단한 테스트를 통해 이 문제를 해결했습니다.
$ sudo mknod /dev/null2 u 1 3
$ ls -l /dev/null*
crw-rw-rw- 1 root root 1, 3 Jan 12 2015 /dev/null
crw-r--r-- 1 root root 1, 3 Oct 19 22:56 /dev/null2
u
명령의 A는 c
다음과 동일한 개발 노드를 제공합니다. 경우 폐쇄.
에 관해서는왜두 문자 모두 허용됩니다. 가장 좋은 추측은 b
의미가 "블록"이 아닌 "버퍼"라고 생각하는 사람들에게는 별칭일 뿐이므로 "문자 u
" 대신 "버퍼되지 않음"을 의미하는 반의어로 필요하다는 것입니다 c
.
나는 처음에 GNU의 이 기능이 mknod
이전 버전의 Unix와의 호환성을 위한 것이라고 생각했습니다 mknod
.GNU 파일 도구GNU의 이 기능은 mknod
Linux 자체 이전으로 거슬러 올라갑니다.첫 번째 버전 관리 체크인mknod.c
u
, 그러나 Unix가 매개변수로 받아들일 수 있는 문서를 찾지 못했기 mknod(1)
때문에 그러한 가정은 성립되지 않습니다. ²
내레이터:
1991년 7월에
mknod
GNU Fileutils에 유틸리티가 추가되었습니다. 1991년 9월이 되어서야 Linux 커널의 첫 번째 버전이 유즈넷에 출시되었습니다. 이는 GNU의 첫 번째 버전이mknod
처음부터 Linux가 아닌 운영 체제를 지원해야 했음을 말해줍니다 .온라인 매뉴얼 페이지를 확인했습니다.솔라리스,HP-UX,AIX,FreeBSD,SCO 오픈 서버,SCO 유닉스웨어,미니스2,울트라릭스,2.11BSD, 그리고운영 체제.
mknod u
다른 운영 체제에 대한 문서를 찾을 수 있습니다 .미닉스 3— 하지만 그것은 단지mknod(1)
.mknod
mknod