statvfs(3) - wariua/manpages-ko GitHub Wiki
statvfs, fstatvfs - νμΌ μμ€ν ν΅κ³ μ»κΈ°
#include <sys/statvfs.h>
int statvfs(const char *path, struct statvfs *buf);
int fstatvfs(int fd, struct statvfs *buf);
statvfs()
ν¨μλ λ§μ΄νΈ λ νμΌ μμ€ν
μ λν μ 보λ₯Ό λ°ννλ€. path
λ λ§μ΄νΈ λ νμΌ μμ€ν
λ΄ μμ νμΌμ κ²½λ‘λͺ
μ΄λ€. buf
λ λλ΅ λ€μμ²λΌ μ μλΌ μλ statvfs
ꡬ쑰체μ λν ν¬μΈν°λ€.
struct statvfs {
unsigned long f_bsize; /* νμΌ μμ€ν
λΈλ‘ ν¬κΈ° */
unsigned long f_frsize; /* λ¨νΈ ν¬κΈ° */
fsblkcnt_t f_blocks; /* f_frsize λ¨μμ fs ν¬κΈ° */
fsblkcnt_t f_bfree; /* μ ν΄ λΈλ‘ μ */
fsblkcnt_t f_bavail; /* λΉνΉκΆ μ¬μ©μλ₯Ό μν
μ ν΄ λΈλ‘ μ */
fsfilcnt_t f_files; /* μμ΄λ
Έλ μ */
fsfilcnt_t f_ffree; /* μ ν΄ μμ΄λ
Έλ μ */
fsfilcnt_t f_favail; /* λΉνΉκΆ μ¬μ©μλ₯Ό μν
μ ν΄ μμ΄λ
Έλ μ */
unsigned long f_fsid; /* νμΌ μμ€ν
ID */
unsigned long f_flag; /* λ§μ΄νΈ νλκ·Έ */
unsigned long f_namemax; /* νμΌλͺ
μ΅λ κΈΈμ΄ */
};
νμ
fsblkcnt_t
μ fsfilcnt_t
λ <sys/types.h>
μ μ μλΌ μλ€. λ λͺ¨λ μμ μλ unsigned long
μ΄μλ€.
f_flag
νλλ μ΄ νμΌ μμ€ν
μ λ§μ΄νΈ ν λ μ¬μ©ν μ¬λ¬ μ΅μ
λ€μ λνλ΄λ λΉνΈ λ§μ€ν¬μ΄λ€. λ€μ λΉνΈλ₯Ό 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
μ€λͺ μ°Έκ³ .)
λͺ¨λ νμΌ μμ€ν μμ λ°ν ꡬ쑰체μ λͺ¨λ νλλ€μ μ μλ―Έν κ°μ΄ μλμ§ μ¬λΆλ λͺ μΈλΌ μμ§ μλ€.
fstatvfs()
λ λμ€ν¬λ¦½ν° fd
κ° κ°λ¦¬ν€λ μ΄λ¦° νμΌμ λν΄μ κ°μ μ 보λ₯Ό λ°ννλ€.
μ±κ³΅ μ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
EACCES
- (
statvfs()
)path
μ κ²½λ‘ μ λλΆμ μ΄λ μμμ λν΄ νμ κΆνμ΄ κ±°λΆλμλ€. (path_resolution(7)λ μ°Έκ³ .) EBADF
- (
fstatvfs()
)fd
κ° μ ν¨ν μ΄λ¦° νμΌ λμ€ν¬λ¦½ν°κ° μλλ€. EFAULT
-
buf
λpath
κ° μ ν¨νμ§ μμ μ£Όμλ₯Ό κ°λ¦¬ν€κ³ μλ€. EINTR
- νΈμΆμ΄ μκ·Έλμ μν΄ μ€λ¨λμλ€. signal(7) μ°Έκ³ .
EIO
- νμΌ μμ€ν μμ μ½κΈ°λ₯Ό νλ μ€ I/O μ€λ₯κ° λ°μνλ€.
ELOOP
- (
statvfs()
)path
λ₯Ό λ³ννλ λμ λ무 λ§μ μ¬λ³Όλ¦ λ§ν¬λ₯Ό λ§λ¬λ€. ENAMETOOLONG
- (
statvfs()
)path
κ° λ무 κΈΈλ€. ENOENT
- (
statvfs()
)path
κ° κ°λ¦¬ν€λ νμΌμ΄ μ‘΄μ¬νμ§ μλλ€. ENOMEM
- μ¬μ© κ°λ₯ν 컀λ λ©λͺ¨λ¦¬κ° μΆ©λΆνμ§ μλ€.
ENOSYS
- νμΌ μμ€ν μμ μ΄ νΈμΆμ μ§μνμ§ μλλ€.
ENOTDIR
- (
statvfs()
)path
μ κ²½λ‘ μ λλΆμ ν μμκ° λλ ν°λ¦¬κ° μλλ€. EOVERFLOW
- μΌλΆ κ°μ΄ λ무 컀μ λ°ν κ΅¬μ‘°μ²΄λ‘ ννν μ μλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
μΈν°νμ΄μ€ | μμ± | κ° |
---|---|---|
statvfs() , fstatvfs()
|
μ€λ λ μμ μ± | MT-Safe |
POSIX.1-2001, POSIX.1-2008.
f_flag
νλμ ST_NOSUID
λ° ST_RDONLY
νλκ·Έλ§ POSIX.1μ λͺ
μΈλΌ μλ€. λ€λ₯Έ νλλ€μ μ μλ₯Ό μ»μΌλ €λ©΄ _GNU_SOURCE
λ₯Ό μ μν΄μΌ νλ€.
리λ μ€ μ»€λμ μλ μμ€ν νΈμΆ statfs(2) λ° fstatfs(2)κ° μ΄ λΌμ΄λΈλ¬λ¦¬ νΈμΆμ λ·λ°μΉ¨νλ€.
glibc λ²μ 2.13 μ μ statvfs()
μμλ /proc/mounts
μ λμ€λ λ§μ΄νΈ μ΅μ
λ€μ νμ΄μ f_flag
νλμ λΉνΈλ€μ μ±μ λ€. νμ§λ§ 리λ
μ€ 2.6.36λΆν° κΈ°λ° μμ€ν
νΈμΆ statfs(2)κ° f_flags
νλλ₯Ό ν΅ν΄ νμν μ 보λ₯Ό μ κ³΅ν΄ μ£Όλ©°, κ·Έλμ glibc λ²μ 2.13λΆν°λ statvfs()
ν¨μμμ /proc/mounts
λ₯Ό νλ λμ κ·Έ νλμ μ 보λ₯Ό μ΄μ©νκ² λλ€.
λ€μ νΈμΆμ glibc ꡬνμμλ path
λ₯Ό μΈμλ‘ statvfs()
λ₯Ό νΈμΆν΄μ λ°νλ f_frsize
, f_frsize
, f_bsize
νλλ₯Ό κ°κ° μ¬μ©νλ€.
pathconf(path, _PC_REC_XFER_ALIGN);
pathconf(path, _PC_ALLOC_SIZE_MIN);
pathconf(path, _PC_REC_MIN_XFER_SIZE);
2017-09-15