마운트 지점이되도록 새 디렉토리를 작성 mount(2)
해야하는 경우 읽기 전용 파일 시스템에서 어떤 것도 마운트 할 수 없습니다. 그것은 멍청 할 것이므로 우리는 그것을 배제 할 수 있습니다.
mount 가 마운트 지점이 될 새 디렉토리를 선택적으로 생성 한 경우 이상합니다. 마운트 / 마운트 해제가 항상 발생하는 것은 아니므로 단일 시스템 호출로이 두 단계를 수행하기 위해 커널에 추가 논리를 추가하는 것은 중요한 속도 향상이 아닙니다. mkdir(2)
원하는 경우 시스템 호출 을하려면 사용자 공간에 그대로 두십시오 . Dmitry의 답변 mount(2)
은 두 가지를 모두 수행하면 원자가 아닌 것으로 만듭니다. 그리고 당신에게 여분의 인수 싶어 mount(2)
모드 플래그가 좋아 함께이 open(2)
들어, 소요 O_CREAT
, O_EXCL
등 그냥 사용자 공간을시키는에 비해 어리석은 것 그것을 할.
아니면 mount(8)
( mount(2)
시스템 호출 을하는 전통적인 프로그램 )이 이것을 하는 것에 대해 질문 했습니까? 가능할 수도 있지만 이미 mkdir(1)
작업에 완벽하게 적합 하며 Unix의 디자인은 결합 가능한 훌륭한 작은 도구에 관한 것입니다. 두 가지를 모두 수행하는 도구를 원한다면 간단한 두 가지 도구로 해당 도구를 빌드하는 셸 스크립트를 쉽게 작성할 수 있습니다. 또는 muru가 udisksctl
이미 언급 했듯이이 작업을 수행 할 필요가 없으므로 쓸 필요가 없습니다. 또한 mount(8)
util-linux 의 일반적인 Linux 는 옵션이 파일 시스템에 전달되는 옵션이 아니라 사용자 공간 옵션에 대한 구문 mount -o x-mount.mkdir[=mode]
사용을 지원합니다 x-
.
더 흥미로운 질문 : 왜 부모 파일 시스템에 디렉토리가 있어야 하는가?
pjc50의 답변이 지적한 것처럼 (내 이니셜이 있지만 관계 없음) 디렉토리 목록에 마운트 포인트가 표시되면 모든 추가 검사가 필요합니다 readdir()
.
마운트 지점을 포함하는 디렉토리 (부모 FS)에 디렉토리로 존재하는 것은 좋은 방법입니다. readdir()
마운트 지점이라는 것을 전혀 알 필요가 없습니다. 마운트 지점이 경로 구성 요소로 사용되는 경우 에만 발생 합니다 . 물론 경로 확인은 경로의 모든 디렉토리 구성 요소에 대한 마운트 테이블을 확인해야합니다.
udisksctl
. 왜 사용mount
합니까?