GETFSSTAT(2)

명칭
getfsstat - mount 된 모든 파일 시스템의 리스트를 얻는다

프로그램 라이브러리
libc

서식
<sys/param.h> <sys/ucred.h> <sys/mount.h> int getfsstat(struct statfs *buf, long bufsize, int flags)

해설
getfsstat() (은)는, mount 된 모든 파일 시스템에 관한 정보를 돌려줍니다. buf 하 다음과 같이 정의된다 statfs 구조체에의 포인터입니다.

    typedef struct fsid { int32_t val[2]; } fsid_t;	/* 파일 시스템 ID 타입 */
    /*
     * 파일 시스템 통계
     */
    #define MFSNAMELEN 16	/* 파일 시스템의 타입명장, 눌을 포함한다 */
    #define MNAMELEN   90	/* 돌려주어진 이름에 대한 버퍼의 길이 */
    struct statfs {
        long    f_spare2;		/* 플레이스홀더 */
        long    f_bsize;		/* 기본적인 파일 시스템의 블록 사이즈 */
        long    f_iosize;		/* 최적인 전송 블록 사이즈 */
        long    f_blocks;		/* 파일 시스템내의 합계 데이터 블록 */
        long    f_bfree;		/* 파일 시스템내의 미사용의 블록 */
        long    f_bavail;		/* 슈퍼 유저 이외의 유저가 이용할 수 있는 미사용의 블록 */
        long    f_files;		/* 파일 시스템내의 합계 파일 노드 */
        long    f_ffree;		/* 파일 시스템내의 미사용의 파일 노드 */
        fsid_t  f_fsid;		/* 파일 시스템 ID */
        uid_t   f_owner;		/* 파일 시스템을 mount 한 유저 */
        int     f_type;		/* 파일 시스템의 타입 (아래와 같이를 참조) */
        int     f_flags;		/* mount 플래그의 카피 */
        long    f_spare[2];		/* 후를 위한 margin */
        char    f_fstypename[MFSNAMELEN];/* 파일 시스템의 타입명 */
        char    f_mntonname[MNAMELEN];/* mount 된 디렉토리 */
        char    f_mntfromname[MNAMELEN];/* mount 된 파일 시스템 */
    };

돌려주어질 가능성이 있는 플래그에는 다음의 것이 포함됩니다.

MNT_RDONLY
    파일 시스템은 읽기 전용으로서 mount 되고 있습니다. 슈퍼 유저도 기록 할 수 없습니다.

MNT_NOEXEC
    그 파일 시스템상의 파일을 실행할 수 없습니다.

MNT_NOSUID
    실행될 때, 파일의 setuid 비트와 setgid 비트가 효과를 가지지 않습니다.

MNT_NODEV
    파일 시스템내의 특수 파일은 열지 않습니다.

MNT_SYNCHRONOUS
    파일 시스템에의 모든 입출력이 동기적으로 실행됩니다.

MNT_ASYNCHRONOUS
    파일 시스템 입출력이 동기적으로 실행되지 않습니다.

MNT_LOCAL
    로컬에 있는 파일 시스템입니다.

MNT_QUOTA
    파일 시스템상에서 쿼터가 유효하게 되어 있습니다.

MNT_ROOTFS
    루트 파일 시스템인 것을 나타냅니다.

MNT_EXRDONLY
    파일 시스템은 읽기 전용으로 export 되고 있습니다.

MNT_EXPORTED
    파일 시스템은 읽기와 기록의 양쪽 모두에 대해 export 되고 있습니다.

MNT_DEFEXPORTED
    파일 시스템은 어느 인터넷 호스트에도 읽기와 기록의 양쪽 모두에 대해 export 되고 있습니다.

MNT_EXPORTANON
    파일 시스템은 모든 원격 접근을 익명 유저에게 MAP 합니다.

MNT_EXKERB
    파일 시스템은 Kerberos uid 매핑으로 export 되고 있습니다.

특정의 파일 시스템에 대해 미정도리가 되는 필드는 -1 으로 설정됩니다. 버퍼는 fsstat 구조체의 배열로 묻을 수 있습니다. mount 된 각 파일 시스템에 대해 1 개(살)씩, 최고 bufsize 그리고 지정된 사이즈까지입니다.

buf (으)로서 NULL 가 지정되어 있는 경우, getfsstat() (은)는 mount 되고 있는 파일 시스템의 수만을 돌려줍니다.

통상, flags 에는 MNT_WAIT (을)를 지정해야 합니다. flags (으)로서 MNT_NOWAIT 하지만 지정되어 있는 경우, getfsstat() (은)는 각 파일 시스템으로부터의 갱신을 요구하지 않고 이용할 수 있는 정보를 돌려줍니다. 그 때문에, 정보가운데는 낡아지고 있는 것이 있겠지만, getfsstat() (은)는 응답할 수 없는 파일 시스템으로부터의 정보를 대기해 블록 할 것은 없습니다.

반환값
정상적으로 완료하면(자) fsstat 구조체의 수가 돌려주어집니다. 그렇지 않은 경우는 -1 이 돌려주어져 에러를 나타내기 위해서(때문에) 글로벌 변수 errno 하지만 설정됩니다.

에러
getfsstat() (은)는 이하의 1 개에서도 진정한 경우, 처리에 실패합니다.

[EFAULT]
    buf 하지만 무효인 주소를 가리키고 있습니다.

[EIO]
    파일 시스템을 읽고 쓰기하고 있는 동안에 I/O (입출력) 에러가 발생했습니다.

관련 항목
statfs(2), fstab(5), mount(8)

역사
getfsstat() 함수는 4.4BSD 그리고 처음 등장했습니다.