장치 파일이 삭제되면 어떻게 되나요?

장치 파일이 삭제되면 어떻게 되나요?

나는 /dev 아래의 파일에 대해 전반적으로 이해하고 있습니다.

두 가지 유형(문자/블록)이 있으며 이러한 파일에 액세스하면 커널의 드라이버와 통신한다는 것을 알고 있습니다.

특히 두 가지 유형의 파일 모두에 대해 파일을 삭제하면 어떻게 되는지 알고 싶습니다. 예 를 들어 블록 장치 파일을 삭제하면 /dev/sda어떤 영향이 있습니까? 방금 디스크를 마운트 해제했나요?

마찬가지로 /dev/mouse/mouse0삭제하면 어떻게 되나요? 마우스가 작동을 멈췄나요? 자동으로 교체되나요?

이 파일을 삭제할 수 있나요? 가상 머신을 설정하면 시도해 보겠습니다.

답변1

이것은 단지 (특수) 파일입니다. 이는 실제 장치에 대한 "포인터" 역할만 합니다. (즉, 커널 내부의 드라이버 모듈입니다.)

일부 명령/서비스에 이미 파일이 열려 있으면 해당 장치에 대한 핸들이 이미 있고 계속 작동합니다.

일부 명령/서비스가 새 연결을 열려고 하면 파일에 액세스하려고 시도하고 "파일을 찾을 수 없음"으로 실패합니다.

일반적으로 이러한 파일은 Windows에 의해 채워지며 udev시스템 시작 시 및 USB 장치 연결과 같은 특수 이벤트 시 자동으로 생성되지만 이러한 파일을 수동으로 생성할 수도 있습니다 mknod.

답변2

장치 파일은 실제로 커널 장치 테이블 항목에 대한 파일 시스템 별칭입니다. "ls -l"을 사용하여 /dev 파일을 보면 해당 파일에 메이저 및 마이너 장치 번호가 있음을 알 수 있습니다. 이러한 파일이 파일 시스템에서 삭제되면 적절한 도구를 사용하여 특수 파일을 커널 장치 테이블의 항목에 다시 연결하여 언제든지 파일을 다시 생성할 수 있습니다. mknod(1)를 참조하세요.

답변3

그 이후에는 해당 장치를 연 프로그램에서만 액세스할 수 있습니다. 따라서 파일 시스템을 마운트 해제할 수 없습니다. udev를 사용하면 재부팅하면 이러한 장치가 복원될 수 있습니다. 유닉스를 배우는 이상한 방법.

관련 정보