마운트 지점이되도록 새 디렉토리를 작성 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합니까?