MOUNT(2)

이름
mount, umount - 파일 시스템을 마운트하거나 마운트를 푼다.

사용법
#include <sys/mount.h>

int mount(const char *specialfile, const char * dir , const char * filesystemtype, unsigned long rwflag , const void * data);

int umount(const char *specialfile);

int umount(const char *dir);

설명
mount 는 specialfile (자주 장치이름이라 불린다)에 의해 지정된 파일시스템을 dir로 지정한 디렉토리에 연결한다. umount 는 specialfile 나 dir가 지정한 파일시스템의 연결을 제거한다. 슈퍼-유저만이 파일시스템을 마운트하거나 마운트를 풀수 있다. filesystemtype인자는 /proc/filesystems 에 나열된 값들중 하나이어야 한다. ("minix", "ext2", "msdos", "proc", "nfs", "iso9660" 등등). rwflag인자는 상위 16비트에 매직 수 0xC0ED 를 가지며 하위 16비트에 다양한 마운트 플래그를 (libc4에서는 <linux/fs.h>에 glibc2에서는 <sys/mount.h>에 정의되어 있다) 가진다.:
#define MS_RDONLY    1 /* 읽기-전용 마운트 */
#define MS_NOSUID    2 /* suid 그리고 sgid 비트를 무시 */
#define MS_NODEV     4 /* 특별 파일 장치 접근을 허용하지 않는다 */
#define MS_NOEXEC    8 /* 프로그램 실행을 허용하지 않는다 */
#define MS_SYNC     16 /* 쓰기를 일단 동기화 */
#define MS_REMOUNT  32 /* 마운트된 FS의 플래그를 수정 */
#define MS_MGC_VAL 0xC0ED0000
매직 수가 없다면, 마지막 두 인자는 사용되지 않는다. data인자는 다른 파일 시스템에 의해 해석된다.

반환값
성공시, 0이 리턴된다. 에러시, -1이 리턴되며 errno 는 적당한 값으로 설정된다.

에러
아래 보여준 에러들은 에러와 독립적인 파일 시스템 타입의 결과 때문이다. 각 파일 시스템 타입은 자기 자신의 특별한 에러를 가지고 있으며 자기 자신의 특별한 행동을 한다. 세부사항을 위해서 커널 소스를 참조해라.

EPERM
    사용자가 슈퍼-유저가 아니다.

ENODEV
    Filesystemtype 가 커널에 설정되어 있지 않다.

ENOTBLK
    Specialfile 는 블럭 장치가 아니다.(만일 장치가 요구된다면)

EBUSY
    Specialfile 가 이미 마운트가 되어 있다. 또는 읽기-전용으로 다시 마운트 할수 없다. 왜냐하면 쓰기 위해 파일을 열었기 때문이다. 또는 dir 에 마운트할수 없다. 왜냐하면 dir 가 여전히 바쁘기 때문이다.(그것은 몇몇 태스크를 위한 작업 디렉토리에 있는 경우, 다른 장치의 마운트 포인트, 열린 파일을 가지고 있는 경우 등등이다)

EINVAL
    Specialfile 가 유효한 슈퍼블럭이 아니다. 또는 재 마운트가 specialfile 가 dir에 이미 마운트되어 있지 않는 경우 시도 되었다. 또는 dir 가 마운트 포인터가 아닌 동안 마운트 푸는 걸 시도 했다.

EFAULT
    포인터 인자들중 하나가 유저 주소 공간 외를 가리키고 있다.

ENOMEM
    커널이 파일 이름이나 데이터를 복사하기 위한 여유 페이지를 할당할수 없다.

ENAMETOOLONG
    경로 이름이 MAXPATHLEN보다 길다.

ENOENT
    경로이름이 비어 있거나 존재하지 않는 요소이다.

ENOTDIR
    두번째 인자, 또는 첫 인자의 머릿부가 디렉토리가 아니다.

EACCES
    경로의 요소를 탐색할수 없다.
    또는 일기-전용 파일 시스템 마운트가 MS_RDONLY 플래그를 주는것 없이 시도 되었다.
    또는, 블럭 장치 Specialfile 가 MS_NODEV 옵션을 가지고 마운트 된 파일시스템 내에 위치해 있다.

ENXIO
    블럭 장치 specialfile 의 주 넘버가 범위 밖에 있다.

EMFILE
    (블럭 장치가 요구되지 않는 경우:) 더미 장치 테이블이 꽉차 있다.

호환
이 함수는 리눅스에 의존하며 호환성을 염두에 둔 프로그램에서는 사용해서는 안된다.

관련 항목
mount(8), umount(8)

역자
정강훈 <skyeyes@soback.kornet.net>, 2000년 9월 16일