디렉토리의 모든 항목과 상호 작용할 수 있는 방법이 있습니까 /dev
? 내가 이해한 바에 따르면, 디렉토리에 있는 대부분의 항목 /dev
은 "일반" 파일이 아닙니다. 속성을 나열하거나 다른 작업을 수행할지 여부와 같이 명령이나 상호 작용할 수 있는 방법이 있는지 궁금합니다.
답변1
이것은 다소 흥미로운 질문입니다. 귀하의 의견을 인용하겠습니다.
대부분의 콘텐츠가 파일이므로 일종의 편집기를 사용하여 콘텐츠에 포함된 내용을 확인할 수 있는 방법이 있습니까?
이것은 "모든 것이 파일이다"라는 말을 문자 그대로 받아들여야 한다는 오해(초심자로서 나 자신이 가졌던)를 드러냅니다.
물론 "파일"은 명명된 바이트 모음으로, 별도의 단위로 취급되며 일반적으로 디스크에 저장됩니다.
"UNIX에서는 모든 것이 파일입니다"라는 말을 들으면이것은 사용된 "파일"의 정의가 아닙니다.
오히려, 이런 의미에서 "파일"은 "표준을 사용하여 어떤 방식으로든 접근하거나 처리할 수 있는 것"입니다.시스템 호출파일을 처리하는 데 사용됩니다. "
이와 같은 가상 파일 시스템은 /proc
이 점을 잘 보여줍니다. 의 "파일"과 "디렉터리"는 /proc
디스크에 저장된 실제 파일과 디렉터리가 아닙니다. 어디에도 저장되지 않습니다.
대신 프로세스가 이러한 파일 중 하나를 읽으려고 할 때 -파일에서 읽는 것과 동일한 시스템 호출을 사용하십시오.--커널은 호출을 다르게 처리합니다. 커널은 디스크에서 데이터를 가져오고 데이터를 반환하는 대신 커널의 적절한 런타임 데이터로 직접 응답합니다. 그러나 이는 "투명한" 추상화입니다.커널이 요청하지 않는 한 어떤 프로세스도 파일에서 데이터를 읽지 않습니다. (이것은 "시스템 호출"이라는 용어에 포함된 개념입니다.)
이제 그 안의 디렉토리 항목은 /dev
"Special Files"입니다. 모든 파일 관련 시스템 호출이 모든 파일에 적용되는 것은 아닙니다. 그러나 모든 종류의 특수 장치 또는아무것프로세스로 처리 가능마치 파일인 것처럼,대부분의 경우 여전히 사실입니다.
항목은 /dev
다양한 유형의 항목에 대한 추상화이므로실제로차이점은 이 도구로 할 수 있는 모든 유형의 작업을 포괄하는 일반적인 답변을 제공하기가 쉽지 않다는 것입니다.
그러나 이러한 항목이 무엇인지, 의미는 무엇인지, 처리 방법을 진정으로 이해하려면 다음 내용을 읽어야 합니다.
"문서"언제나"디렉토리 항목이 있는 것"을 의미하며 일반 파일일 수도 있고 아닐 수도 있고 "일반 파일"을 의미합니다.언제나간단히 "파일"이라고도 하는 "이름이 지정된 바이트 모음"을 나타냅니다.
이 질문에 대한 답변은 다음과 같습니다.
따라서 /dev의 모든 항목은 "파일"입니다...
예, 하지만 둘 다 일반 파일이 아니어야 합니다.
...하지만 그렇다고 해서 반드시 사람이 편집할 수 있다는 의미는 아닙니다...
인간 외에 누가 무엇이든 편집할 수 있다고 생각하시나요? 오래전에 죽은 시스템 프로그래머이든 당신 자신이든 인간은 의사 결정이나 의도의 유일한 원천입니다.어느컴퓨터 시스템. (이에 대한 철학적 배경은 Mark Burgess의 작업을 참조하세요.) :D
하지만 무슨 말인지는 알 것 같아요. 의 특수 파일은 /dev
텍스트 파일이 아니기 때문에 일반적인 "텍스트 편집기"로 편집할 수 없다고 정확하게 말할 수 있습니다. 또한 /dev
항목 자체를 수정하려면 루트 권한이 필요하지만 사용자 공간(루트가 아닌 프로세스라고도 함) 프로세스에서는 다음을 수행할 수 있습니다.사용그들을.
...UNIX에서는 파일을 시스템 호출에 의해 처리되거나 관리되는 것으로 부르기 때문입니다...
네, 맞습니다. "파일"이라고 불리는 모든 것은 시스템 호출을 사용하여 처리됩니다. 이것포함하다그런데 일반 파일입니다. 를 사용하는 경우 gedit
편집하려는 파일을 여는 방법은 시스템 호출을 사용하는 것입니다. 다른 시스템 호출을 통해 파일의 내용을 읽습니다.
...하지만 사용자가 편집할 수 있습니다. 내가 맞나요?
아니요, 마지막 부분이 잘못되었습니다. 사용자가 모든 파일을 편집할 수 있는 것은 아닙니다. 또한 "편집"은 매우 매우 부정확한 단어이며 이 정도 세부 수준에서 이야기할 때는 거의 의미가 없습니다.
대신 우리는 모두 말해야일반 파일파일 열기, 읽기, 쓰기 등의 시스템 호출을 통해 사용자 공간 프로세스에서 처리할 수 있습니다. 그러나 이러한 시스템 호출은 다양한 이유로 실패할 수 있습니다(권한 부족, 디스크가 꽉 찼을 때 쓰기 시도, 디스크가 가득 찼을 때 쓰기 시도). 디스크가 읽기 전용으로 마운트된 경우 등).
특수 파일은 시스템 호출로 처리할 수도 있지만 이 경우 각 개별 시스템 호출에 대한 지원은 특수 파일의 유형과 궁극적으로 해당 시스템 호출을 처리하는 기본 드라이버에 따라 다릅니다.
블록 및 문자 특수 파일을 더 잘 이해하려면 다음을 참조하세요.