truncate(2) - wariua/manpages-ko GitHub Wiki
truncate, ftruncate - νμΌμ μ§μ ν κΈΈμ΄λ‘ μ λ¨νκΈ°
#include <unistd.h>
#include <sys/types.h>
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
glibc κΈ°λ₯ νμΈ λ§€ν¬λ‘ μ건 (feature_test_macros(7) μ°Έκ³ ):
-
truncate()
: -
_XOPEN_SOURCE >= 500
|| /* glibc 2.12λΆν°: */ _POSIX_C_SOURCE >= 200809L
|| /* glibc λ²μ <= 2.19: */ _BSD_SOURCE
-
ftruncate()
: -
_XOPEN_SOURCE >= 500
|| /* glibc 2.3.5λΆν°: */ _POSIX_C_SOURCE >= 200112L
|| /* glibc λ²μ <= 2.19: */ _BSD_SOURCE
truncate()
λ° ftruncate()
ν¨μλ path
κ° μ§λͺ
νκ±°λ fd
κ° κ°λ¦¬ν€λ μ κ· νμΌμ μ νν length
λ°μ΄νΈ ν¬κΈ°κ° λκ² νλ€.
νμΌμ΄ μλ κ·Έ ν¬κΈ°λ³΄λ€ μ»ΈμΌλ©΄ λ€μͺ½ λ°μ΄ν°λ₯Ό μκ² λλ€. νμΌμ΄ μλ κ·Έ ν¬κΈ°λ³΄λ€ μμμΌλ©΄ νμ₯λλ©°, νμ₯λ λΆλΆμ μ½μΌλ©΄ λ λ°μ΄νΈ('\0')κ° λμ¨λ€.
νμΌ μ€νμ μ λ°λμ§ μλλ€.
ν¬κΈ°κ° λ°λμμΌλ©΄ νμΌμ st_ctime
λ° st_mtime
νλ(κ°κ° μ΅κ·Ό μν λ³κ²½ μκ° λ° μ΅κ·Ό μμ μκ°. inode(7) μ°Έκ³ )κ° κ°±μ λλ©°, λͺ¨λ λΉνΈ set-user-ID λ° set-group-IDκ° μ§μμ§ μ μλ€.
ftruncate()
μμλ νμΌμ΄ μ°κΈ° κ°λ₯νκ² μ΄λ € μμ΄μΌ νλ€. truncate()
μμλ νμΌμ΄ μ°κΈ° κ°λ₯ν΄μΌ νλ€.
μ±κ³΅ μ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
truncate()
:
EACCES
- κ²½λ‘ μ λλΆμ μ΄λ μμμ λν΄ νμ κΆνμ΄ κ±°λΆλμλ€. λλ μ§μ ν νμΌμ΄ μ¬μ©μμκ² μ°κΈ° κ°λ₯νμ§ μλ€. (path_resolution(7)λ μ°Έκ³ .)
EFAULT
-
path
μΈμκ° νλ‘μΈμ€μ ν λΉλ μ£Όμ κ³΅κ° λ°μ κ°λ¦¬ν€κ³ μλ€. EFBIG
-
length
μΈμκ° μ΅λ νμΌ ν¬κΈ°λ³΄λ€ ν¬λ€. (XSI) EINTR
- λλκΈ°λ₯Ό κΈ°λ€λ¦¬λ©° λΈλ‘λΌ μλ λμ νΈμΆμ΄ μκ·Έλ νΈλ€λ¬μ μν΄ μ€λ¨λμλ€. fcntl(2) λ° signal(7) μ°Έκ³ .
EINVAL
-
length
μΈμκ° μμμ΄κ±°λ μ΅λ νμΌ ν¬κΈ°λ³΄λ€ ν¬λ€. EIO
- μμ΄λ Έλ κ°±μ μ€ I/O μ€λ₯κ° λ°μνλ€.
EISDIR
- μ§μ ν νμΌμ΄ λλ ν°λ¦¬μ΄λ€.
ELOOP
- κ²½λ‘λͺ μ λ³ννλ λμ λ무 λ§μ μ¬λ³Όλ¦ λ§ν¬λ₯Ό λ§λ¬λ€.
ENAMETOOLONG
- κ²½λ‘λͺ μ μ΄λ μμκ° 255κΈμλ₯Ό λμλ€. λλ μ 체 κ²½λ‘λͺ μ΄ 1023κΈμλ₯Ό λμλ€.
ENOENT
- μ§μ ν νμΌμ΄ μ‘΄μ¬νμ§ μλλ€.
ENOTDIR
- κ²½λ‘ μ λλΆμ ν μμκ° λλ ν°λ¦¬κ° μλλ€.
EPERM
- νμ νμΌ μμ€ν μμ νμ¬ ν¬κΈ° λκ² νμΌμ νμ₯νλ κ±Έ μ§μνμ§ μλλ€.
EPERM
- νμΌ λ΄μΈ λλ¬Έμ λμμ΄ λ§νλ€. fcntl(2) μ°Έκ³ .
EROFS
- μ§μ ν νμΌμ΄ μ½κΈ° μ μ© νμΌ μμ€ν μ μμΉν΄ μλ€.
ETXTBSY
- νμΌμ΄ μ€ν νμΌμΈλ° νμ¬ μ€ν μ€μ΄λ€.
κ°μ μ€λ₯λ€μ΄ ftruncate()
μλ ν΄λΉνλ path
μμ λκ° μλͺ»λ μ μλ λμ νμΌ λμ€ν¬λ¦½ν° fd
μμ λκ° μλͺ»λ μ μλ€.
EBADF
-
fd
κ° μ ν¨ν νμΌ λμ€ν¬λ¦½ν°κ° μλλ€. -
EBADF
λλEINVAL
-
fd
κ° μ°κΈ° κ°λ₯νκ² μ΄λ € μμ§ μλ€. EINVAL
-
fd
κ° μ κ· νμΌμ΄λ POSIX 곡μ λ©λͺ¨λ¦¬ κ°μ²΄λ₯Ό κ°λ¦¬ν€κ³ μμ§ μλ€. -
EINVAL
λλEBADF
- νμΌ λμ€ν¬λ¦½ν°
fd
κ° μ°κΈ° κ°λ₯νκ² μ΄λ € μμ§ μλ€. POSIXμμλ μ΄ κ²½μ°μ μ΄λ μͺ½ μ€λ₯λ νμ©νλ©°, μ΄μ κ°λ₯ν μμ©μμλ λ μ€λ₯λ₯Ό λͺ¨λ μ²λ¦¬νλ κ² μ’λ€. (리λ μ€μμλEINVAL
μ λ΄λλλ€.)
POSIX.1-2001, POSIX.1-2008, 4.4BSD, SVr4. (4.2BSDμμ μ΄ νΈμΆλ€μ΄ μ²μ λ±μ₯νλ€.)
POSIX 곡μ λ©λͺ¨λ¦¬ κ°μ²΄μ ν¬κΈ°λ₯Ό μ€μ νλ λ°μλ ftruncate()
λ₯Ό μΈ μ μλ€. shm_open(3) μ°Έκ³ .
DESCRIPTIONμ μΈλΆ λ΄μ©λ€μ XSI μ€μ μμ€ν
μ λν κ²μ΄λ€. XSI λΉμ€μ μμ€ν
μ κ²½μ°, POSIX νμ€μμλ length
κ° νμΌ κΈΈμ΄λ₯Ό μ΄κ³Όν λ ftruncate()
μ λμ λ°©μμΌλ‘ λ κ°μ§λ₯Ό νμ©νλλ° (μ°Έκ³ λ‘ κ·Έλ° μν©μμ truncate()
μ λν΄μ μ무κ²λ λͺ
μΈλΌ μμ§ μλ€), μ€λ₯λ₯Ό λ°νν μλ μκ³ , νμΌμ νμ₯ν μλ μλ€. λλ€μ μ λμ€ μμ€ν
κ³Ό λ§μ°¬κ°μ§λ‘ 리λ
μ€μμλ μ체 νμΌ μμ€ν
μ λ€λ£° λ XSI μꡬ μ¬νμ λ°λ₯Έλ€. νμ§λ§ λͺλͺ μΈλ νμΌ μμ€ν
μμλ truncate()
μ ftruncate()
λ₯Ό μ΄μ©ν΄ νμΌμ νμ¬ κΈΈμ΄ λλ¨Έλ‘ νμ₯νλ κ±Έ νμ©νμ§ μλλ€. 리λ
μ€μμ λμ λλ μλ‘ VFATμ΄ μλ€.
μλμ 리λ
μ€ truncate()
λ° ftruncate()
μμ€ν
νΈμΆμ ν° νμΌ μ€νμ
μ λ€λ£° μ μλλ‘ μ€κ³λμ§ μμλ€. κ·Έλμ 리λ
μ€ 2.4μμ ν° νμΌμ λ€λ£¨κΈ° μν truncate64()
λ° ftruncate64()
λ₯Ό μΆκ°νλ€. νμ§λ§ glibcμ λνΌ ν¨μμμ ν¬λͺ
νκ² μ΅μ μμ€ν
νΈμΆμ μ΄μ©νκΈ° λλ¬Έμ glibcλ₯Ό μ°λ μμ©μμλ μ΄λ° λ΄μ©μ λͺ¨λ₯΄κ³ μμ΄λ λλ€.
syscall(2)μμ μ€λͺ νλ μ΄μ λ€ λλ¬Έμ μΌλΆ 32λΉνΈ μν€ν μ²μμλ μ΄ μμ€ν νΈμΆλ€μ νΈμΆ μκ·Έλμ²κ° λ€λ₯΄λ€.
glibc 2.12μ ν€λ νμΌ λ²κ·Έκ° μμ΄μ ftruncate()
μ μΈμ λ
ΈμΆμν€κΈ° μν΄ νμν _POSIX_C_SOURCE
μ΅μκ°μ΄ 200112Lκ° μλ 200809Lμλ€. μ΄ν glibc λ²μ λ€μμ κ³ μ³μ‘λ€.
truncate(1)
, open(2), stat(2), path_resolution(7)
2019-03-06