STATFS(2)

명칭
statfs - 파일 시스템의 통계를 입수

프로그램 라이브러리
libc

서식
<sys/param.h> <sys/mount.h> int statfs(const char *path, struct statfs *buf) int fstatfs(int fd, struct statfs *buf)

해설
statfs() (은)는, mount 되고 있는 파일 시스템의 정보를 되돌립니다. path (은)는, mount 되고 있는 파일 시스템내의 임의의 파일의 패스명입니다. buf (은)는, 이하와 같이 정의 되고 있다 statfs() 의 구조체의 포인터입니다.

    typedef struct fsid { int32_t val[2]; } fsid_t; /* 파일 시스템 ID 형 */
    /*
     * 파일 시스템 통계
     */
    #define MFSNAMELEN 16	/* 눌을 포함한 파일 시스템명의 길이 */
    #define MNAMELEN   90	/* 반환값의 용무의 버퍼의 길이 */
    struct statfs {
    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_syncwrites;	  /* mount 하고 나서의 동기 기입수 */
    long    f_asyncwrites;	  /* mount 하고 나서의 비동기 기입수 */
    char	f_fstypename[MFSNAMELEN];/* 파일 시스템 타입명 */
    char	f_mntonname[MNAMELEN];	 /* 마운트 포인트 */
    long    f_syncreads;		 /* mount 이후의 동기 독해수 */
    long    f_asyncreads;		 /* mount 이후의 비동기 독해수 */
    char	f_mntfromname[MNAMELEN];	/* mount 된 파일 시스템 */
    };

되돌려질 가능성이 있는 플래그는 이하대로입니다.

MNT_RDONLY
    파일 시스템이 읽기 전용으로 mount 되고 있습니다. 슈퍼 유저라도 쓰기선.

MNT_NOEXEC
    그 파일 시스템으로부터 파일을 실행할 수 없습니다.

MNT_NOSUID
    파일의 setuid 비트와 setgid 비트가, 파일의 실행시에 받아들여지지 않습니다.

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

MNT_SYNCHRONOUS
    파일 시스템에의 모든 입출력이, 동기를 취해 실행됩니다.

MNT_ASYNC
    파일 시스템의 입출력이, 동기를 취해 실행되지 않습니다.

MNT_LOCAL
    파일 시스템이 로컬에 상주하고 있습니다.

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

MNT_ROOTFS
    루트 파일 시스템을 확인합니다.

MNT_EXRDONLY
    파일 시스템이, 읽기 전용으로 export 됩니다.

MNT_EXPORTED
    파일 시스템이, 읽고 쓰기의 양쪽 모두로 export 됩니다.

MNT_DEFEXPORTED
    파일 시스템이, 읽고 쓰기의 양쪽 모두로 임의의 인터넷 호스트에 export 됩니다.

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

MNT_EXKERB
    파일 시스템이, Kerberos uid 매핑으로 export 됩니다.

특정의 파일 시스템으로 정의되어 있지 않은 필드는, -1 (으)로 설정됩니다. fstatfs() (은)는, 기술자 fd 그리고 참조되는 오픈 파일에 대해서 같은 정보를 되돌립니다.

반환값

에러
statfs() (은)는, 이하 중 1 개(살) 이상이 진인 경우에 에러가 됩니다.

[ENOTDIR]
    path 의 패스의 원가요소중에 디렉토리 이외의 것이 포함되어 있습니다.

[ENAMETOOLONG]
    path 의 원가요소가 255 캐릭터를 넘고 있는지, 또는 path 전체가 1023 캐릭터를 넘고 있습니다.

[ENOENT]
    path 의 참조하는 파일이 존재하지 않습니다.

[EACCES]
    path 에는, 검색이 허가되어 있지 않은 디렉토리가 포함되어 있습니다.

[ELOOP]
    path (을)를 변환할 경우에 검출된 기호 연결이 너무 많습니다.

[EFAULT]
    buf 인가 path 하지만, 부정한 주소를 가리키고 있습니다.

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

fstatfs() (은)는, 이하 중 1 개(살) 이상이 진인 경우에 에러가 됩니다.

[EBADF]
    fd 하지만 유효 오픈 파일 기술자가 아닙니다.

[EFAULT]
    buf 하지만 부정한 주소를 가리키고 있습니다.

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

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