statfs(2) - wariua/manpages-ko GitHub Wiki
statfs, fstatfs - νμΌ μμ€ν ν΅κ³ μ»κΈ°
#include <sys/vfs.h> /* λλ <sys/statfs.h> */
int statfs(const char *path, struct statfs *buf);
int fstatfs(int fd, struct statfs *buf);
statfs()
μμ€ν
νΈμΆμ λ§μ΄νΈ λ νμΌ μμ€ν
μ λν μ 보λ₯Ό λ°ννλ€. path
λ λ§μ΄νΈ λ νμΌ μμ€ν
λ΄ μμ νμΌμ κ²½λ‘λͺ
μ΄λ€. buf
λ λλ΅ λ€μμ²λΌ μ μλΌ μλ statfs
ꡬ쑰체μ λν ν¬μΈν°λ€.
struct statfs {
__fsword_t f_type; /* νμΌ μμ€ν
μ ν (μλ μ°Έκ³ ) */
__fsword_t f_bsize; /* μ΅μ μ μ‘ λΈλ‘ ν¬κΈ° */
fsblkcnt_t f_blocks; /* νμΌ μμ€ν
λ΄ μ΄ λ°μ΄ν° λΈλ‘ */
fsblkcnt_t f_bfree; /* νμΌ μμ€ν
λ΄ μ ν΄ λΈλ‘ */
fsblkcnt_t f_bavail; /* λΉνΉκΆ μ¬μ©μκ° μ¬μ© κ°λ₯ν
μ ν΄ λΈλ‘ */
fsfilcnt_t f_files; /* νμΌ μμ€ν
λ΄ μ΄ νμΌ λ
Έλ */
fsfilcnt_t f_ffree; /* νμΌ μμ€ν
λ΄ μ ν΄ νμΌ λ
Έλ */
fsid_t f_fsid; /* νμΌ μμ€ν
ID */
__fsword_t f_namelen; /* νμΌλͺ
μ΅λ κΈΈμ΄ */
__fsword_t f_frsize; /* λ¨νΈ ν¬κΈ° (리λ
μ€ 2.6λΆν°) */
__fsword_t f_flags; /* νμΌ μμ€ν
λ§μ΄νΈ νλκ·Έ
(리λ
μ€ 2.6.36λΆν°) */
__fsword_t f_spare[xxx];
/* ν₯ν μ©λλ₯Ό μν΄ μλΉλ ν¨λ© λ°μ΄νΈ */
};
f_type
μ λ€μ νμΌ μμ€ν
μ νμ΄ λμ¬ μ μλ€.
ADFS_SUPER_MAGIC 0xadf5
AFFS_SUPER_MAGIC 0xadff
AFS_SUPER_MAGIC 0x5346414f
ANON_INODE_FS_MAGIC 0x09041934 /* μ΅λͺ
μμ΄λ
Έλ FS (μ΄λ¦ μλ
κ°μ νμΌλ€μ μν FS.
μ: epoll, signalfd, bpf) */
AUTOFS_SUPER_MAGIC 0x0187
BDEVFS_MAGIC 0x62646576
BEFS_SUPER_MAGIC 0x42465331
BFS_MAGIC 0x1badface
BINFMTFS_MAGIC 0x42494e4d
BPF_FS_MAGIC 0xcafe4a11
BTRFS_SUPER_MAGIC 0x9123683e
BTRFS_TEST_MAGIC 0x73727279
CGROUP_SUPER_MAGIC 0x27e0eb /* Cgroup κ°μ FS */
CGROUP2_SUPER_MAGIC 0x63677270 /* Cgroup v2 κ°μ FS */
CIFS_MAGIC_NUMBER 0xff534d42
CODA_SUPER_MAGIC 0x73757245
COH_SUPER_MAGIC 0x012ff7b7
CRAMFS_MAGIC 0x28cd3d45
DEBUGFS_MAGIC 0x64626720
DEVFS_SUPER_MAGIC 0x1373 /* 리λ
μ€ 2.6.17 λ° μ΄μ */
DEVPTS_SUPER_MAGIC 0x1cd1
ECRYPTFS_SUPER_MAGIC 0xf15f
EFIVARFS_MAGIC 0xde5e81e4
EFS_SUPER_MAGIC 0x00414a53
EXT_SUPER_MAGIC 0x137d /* 리λ
μ€ 2.0 λ° μ΄μ */
EXT2_OLD_SUPER_MAGIC 0xef51
EXT2_SUPER_MAGIC 0xef53
EXT3_SUPER_MAGIC 0xef53
EXT4_SUPER_MAGIC 0xef53
F2FS_SUPER_MAGIC 0xf2f52010
FUSE_SUPER_MAGIC 0x65735546
FUTEXFS_SUPER_MAGIC 0xbad1dea /* μ¬μ© μ ν¨ */
HFS_SUPER_MAGIC 0x4244
HOSTFS_SUPER_MAGIC 0x00c0ffee
HPFS_SUPER_MAGIC 0xf995e849
HUGETLBFS_MAGIC 0x958458f6
ISOFS_SUPER_MAGIC 0x9660
JFFS2_SUPER_MAGIC 0x72b6
JFS_SUPER_MAGIC 0x3153464a
MINIX_SUPER_MAGIC 0x137f /* μν λ―Έλμ€ FS */
MINIX_SUPER_MAGIC2 0x138f /* 30λ¬Έμ λ―Έλμ€ FS */
MINIX2_SUPER_MAGIC 0x2468 /* λ―Έλμ€ V2 FS */
MINIX2_SUPER_MAGIC2 0x2478 /* λ―Έλμ€ V2 FS, 30λ¬Έμ μ΄λ¦ */
MINIX3_SUPER_MAGIC 0x4d5a /* λ―Έλμ€ V3 FS, 60λ¬Έμ μ΄λ¦ */
MQUEUE_MAGIC 0x19800202 /* POSIX λ©μμ§ ν FS */
MSDOS_SUPER_MAGIC 0x4d44
MTD_INODE_FS_MAGIC 0x11307854
NCP_SUPER_MAGIC 0x564c
NFS_SUPER_MAGIC 0x6969
NILFS_SUPER_MAGIC 0x3434
NSFS_MAGIC 0x6e736673
NTFS_SB_MAGIC 0x5346544e
OCFS2_SUPER_MAGIC 0x7461636f
OPENPROM_SUPER_MAGIC 0x9fa1
OVERLAYFS_SUPER_MAGIC 0x794c7630
PIPEFS_MAGIC 0x50495045
PROC_SUPER_MAGIC 0x9fa0 /* /proc FS */
PSTOREFS_MAGIC 0x6165676c
QNX4_SUPER_MAGIC 0x002f
QNX6_SUPER_MAGIC 0x68191122
RAMFS_MAGIC 0x858458f6
REISERFS_SUPER_MAGIC 0x52654973
ROMFS_MAGIC 0x7275
SECURITYFS_MAGIC 0x73636673
SELINUX_MAGIC 0xf97cff8c
SMACK_MAGIC 0x43415d53
SMB_SUPER_MAGIC 0x517b
SOCKFS_MAGIC 0x534f434b
SQUASHFS_MAGIC 0x73717368
SYSFS_MAGIC 0x62656572
SYSV2_SUPER_MAGIC 0x012ff7b6
SYSV4_SUPER_MAGIC 0x012ff7b5
TMPFS_MAGIC 0x01021994
TRACEFS_MAGIC 0x74726163
UDF_SUPER_MAGIC 0x15013346
UFS_MAGIC 0x00011954
USBDEVICE_SUPER_MAGIC 0x9fa2
V9FS_MAGIC 0x01021997
VXFS_SUPER_MAGIC 0xa501fcf5
XENFS_SUPER_MAGIC 0xabba1974
XENIX_SUPER_MAGIC 0x012ff7b4
XFS_SUPER_MAGIC 0x58465342
_XIAFS_SUPER_MAGIC 0x012fd16d /* 리λ
μ€ 2.0 λ° μ΄μ */
μ΄ MAGIC μμλ€ λλΆλΆμ /usr/include/linux/magic.h
μ μ μλΌ μμΌλ©° μΌλΆλ 컀λ μμ€μ νλμ½λ© λΌ μλ€.
f_flags
νλλ νμΌ μμ€ν
λ§μ΄νΈ μ΅μ
μ λνλ΄λ λΉνΈ λ§μ€ν¬μ΄λ€. λ€μ λΉνΈλ₯Ό 0κ° μ΄μ λ΄λλ€.
ST_MANDLOCK
- νμΌ μμ€ν μμμ κ°μ μ λ½νΉμ νμ©νλ€. (fcntl(2) μ°Έκ³ .)
ST_NOATIME
- μ κ·Ό μκ°μ κ°±μ νμ§ μλλ€. mount(2) μ°Έκ³ .
ST_NODEV
- νμΌ μμ€ν μμμ μ₯μΉ νΉμ νμΌμ λν μ κ·Όμ λΆννλ€.
ST_NODIRATIME
- λλ ν°λ¦¬ μ κ·Ό μκ°μ κ°±μ νμ§ μλλ€. mount(2) μ°Έκ³ .
ST_NOEXEC
- νμΌ μμ€ν μμμ νλ‘κ·Έλ¨ μ€νμ λΆννλ€.
ST_NOSUID
- νμΌ μμ€ν μμ μ€ν νμΌμ λν΄ exec(3)μμ set-user-ID λ° set-group-ID λΉνΈλ₯Ό 무μνλ€.
ST_RDONLY
- νμΌ μμ€ν μ΄ μ½κΈ° μ μ©μΌλ‘ λ§μ΄νΈ λΌ μλ€.
ST_RELATIME
- mtime/ctimeμ λ°λΌμ atimeμ κ°±μ νλ€. mount(2) μ°Έκ³ .
ST_SYNCHRONOUS
- μ°κΈ°λ₯Ό νμΌ μμ€ν
μΌλ‘ μ¦μ λκΈ°ννλ€. (open(2)μ
O_SYNC
μ€λͺ μ°Έκ³ .)
f_fsid
μ λκ° λ€μ΄κ°μΌ νλμ§λ μ무λ λͺ¨λ₯Έλ€. (νμ§λ§ μλ μ°Έκ³ .)
ν΄λΉ νμΌ μμ€ν μμ κ·μ λΌ μμ§ μμ νλλ 0μΌλ‘ μ€μ λλ€.
fstatfs()
λ λμ€ν¬λ¦½ν° fd
κ° κ°λ¦¬ν€λ μ΄λ¦° νμΌμ λν΄μ κ°μ μ 보λ₯Ό λ°ννλ€.
μ±κ³΅ μ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
EACCES
- (
statfs()
)path
μ κ²½λ‘ μ λλΆμ μ΄λ μμμ λν΄ νμ κΆνμ΄ κ±°λΆλμλ€. (path_resolution(7)λ μ°Έκ³ .) EBADF
- (
fstatfs()
)fd
κ° μ ν¨ν μ΄λ¦° νμΌ λμ€ν¬λ¦½ν°κ° μλλ€. EFAULT
-
buf
λpath
κ° μ ν¨νμ§ μμ μ£Όμλ₯Ό κ°λ¦¬ν€κ³ μλ€. EINTR
- νΈμΆμ΄ μκ·Έλμ μν΄ μ€λ¨λμλ€. signal(7) μ°Έκ³ .
EIO
- νμΌ μμ€ν μμ μ½κΈ°λ₯Ό νλ μ€ I/O μ€λ₯κ° λ°μνλ€.
ELOOP
- (
statfs()
)path
λ₯Ό λ³ννλ λμ λ무 λ§μ μ¬λ³Όλ¦ λ§ν¬λ₯Ό λ§λ¬λ€. ENAMETOOLONG
- (
statfs()
)path
κ° λ무 κΈΈλ€. ENOENT
- (
statfs()
)path
κ° κ°λ¦¬ν€λ νμΌμ΄ μ‘΄μ¬νμ§ μλλ€. ENOMEM
- μ¬μ© κ°λ₯ν 컀λ λ©λͺ¨λ¦¬κ° μΆ©λΆνμ§ μλ€.
ENOSYS
- νμΌ μμ€ν μμ μ΄ νΈμΆμ μ§μνμ§ μλλ€.
ENOTDIR
- (
statfs()
)path
μ κ²½λ‘ μ λλΆμ ν μμκ° λλ ν°λ¦¬κ° μλλ€. EOVERFLOW
- μΌλΆ κ°μ΄ λ무 컀μ λ°ν κ΅¬μ‘°μ²΄λ‘ ννν μ μλ€.
리λ
μ€ μ μ©. 리λ
μ€μ statfs()
λ 4.4BSDμ λ²μ μμ μκ°μ μ»μλ€. (νμ§λ§ κ°μ ꡬ쑰체λ₯Ό μ°μ§λ μλλ€.)
statfs
ꡬ쑰체 μ μμ μ¬λ¬ νλμμ μ°λ __fsword_t
νμ
μ glibc λ΄λΆμ© νμ
μ΄μ§ μΈλΆ μ¬μ© μ©λκ° μλλ€. μ΄ λλ¬Έμ νλ‘κ·Έλ¨ λ΄μμ κ·Έ νλλ€μ μ§μ λ³μλ‘ λ³΅μ¬νκ±°λ λΉκ΅νλ € ν λ μ’ μ΄λ €μ΄ λ¬Έμ κ° μκΈ΄λ€. λλ€μ μμ€ν
μμλ κ·Έλ° λ³μμ unsigned int
λ₯Ό μ°λ©΄ μΆ©λΆνλ€.
리λ
μ€μ μν statfs()
λ° fstatfs()
μμ€ν
νΈμΆμ κ·Ήν ν° νμΌ ν¬κΈ°λ₯Ό μΌλμ λκ³ μ€κ³λμ§ μμλ€. κ·Έλμ 리λ
μ€ 2.6μμ μλ‘μ΄ κ΅¬μ‘°μ²΄ statfs64
λ₯Ό μ΄μ©νλ μ μμ€ν
νΈμΆ statfs64()
λ° fstatfs64()
κ° μΆκ°λλ€. μ ꡬ쑰체μλ μλμ statfs
ꡬ쑰체μ κ°μ νλλ€μ΄ μλ ν° νμΌ ν¬κΈ°λ₯Ό λ΄μ μ μλλ‘ μ¬λ¬ νλλ€μ ν¬κΈ°κ° 컀μ‘λ€. glibcμ statfs()
λ° fstatfs()
λνΌ ν¨μμμ 컀λ μ°¨μ΄λ₯Ό ν¬λͺ
νκ² μ²λ¦¬ν΄ μ€λ€.
μ΄λ€ μμ€ν
μλ <sys/vfs.h>
λ§ μκ³ λ€λ₯Έ μμ€ν
μλ <sys/statfs.h>
κ° μμΌλ©° μ μκ° νμλ₯Ό ν¬ν¨νλ€. λ°λΌμ μ μλ₯Ό ν¬ν¨νλ κ² μ΅μ μΌ κ² κ°λ€.
LSBμμλ λΌμ΄λΈλ¬λ¦¬ νΈμΆ statfs()
λ° fstatfs()
λ₯Ό μ°μ§ λ§κ³ λμ statvfs(2) λ° fstatvfs(2)λ₯Ό μ°λΌκ³ νλ€.
μλΌλ¦¬μ€, Irix, POSIXμ μλ μμ€ν
νΈμΆ statvfs(2)λ struct statvfs
(</sys/statvfs.h>
μ μ μλΌ μμ)λ₯Ό λ°ννκ³ κ±°κΈ°μ unsigned long f_fsid
κ° μλ€. 리λ
μ€, SunOS, HP-UX, 4.4BSDμ μλ μμ€ν
νΈμΆ statfs()
λ struct statfs
(<sys/vfs.h>
μ μ μλΌ μμ)λ₯Ό λ°ννκ³ κ±°κΈ°μ fsid_t f_fsid
κ° μμΌλ©°, fsid_t
λ struct { int val[2]; }
λ‘ μ μλΌ μλ€. FreeBSDλ λ§μ°¬κ°μ§μ΄λ ν€λ νμΌ <sys/mount.h>
λ₯Ό μ΄λ€.
κΈ°λ³Έ κ°λ
μ f_fsid
μ μ΄λ€ μμμ λ΄μ©λ¬Όμ΄ μμ΄μ (f_fsid
,ino
) μμ΄ νμΌμ μ μΌνκ² κ²°μ ν΄ μ€λ€λ κ²μ΄λ€. μ΄λ€ μ΄μ 체μ μμλ μ₯μΉ λ²νΈλ₯Ό (λλ κ·Έκ±Έ λ³νν΄μ) μ°κ±°λ μ₯μΉ λ²νΈμ νμΌ μμ€ν
νμ
μ ν©μ³μ μ΄λ€. μ¬λ¬ μ΄μ 체μ μμλ f_fsid
νλλ₯Ό μνΌμ μ μκ²λ§ μ 곡νλ€. (λΉνΉκΆ μ¬μ©μμκ²λ 0μΌλ‘ μ±μ΄λ€.) NFSλ‘ λ΄λ³΄λΌ λ νμΌ μμ€ν
μ νμΌ νΈλ€μ κ·Έ νλλ₯Ό μ¬μ©νλ―λ‘ κ·Έ κ°μ μλ € μ£Όλ κ² λ³΄μ μ°λ € μ¬νμ΄κΈ° λλ¬Έμ΄λ€.
μΌλΆ μ΄μ 체μ μμλ κ·Έ fsid
λ₯Ό sysfs(2) μμ€ν
νΈμΆ λ λ²μ§Έ μΈμλ‘ μΈ μ μλ€.
리λ
μ€ 2.6.38λΆν° 리λ
μ€ 3.1κΉμ§μμλ pipe(2)λ‘ μμ±λ νμΌ λμ€ν¬λ¦½ν°μ λν΄ fstatfs()
κ° ENOSYS
μ€λ₯λ‘ μ€ν¨νλ€.
stat(2), statvfs(3), path_resolution(7)
2017-09-15