close(2) - wariua/manpages-ko GitHub Wiki
close - νμΌ λμ€ν¬λ¦½ν° λ«κΈ°
#include <unistd.h>
int close(int fd);
close()
λ νμΌ λμ€ν¬λ¦½ν°λ₯Ό λ«μμ λ μ΄μ μ΄λ€ νμΌλ κ°λ¦¬ν€μ§ μμΌλ©° μ¬μ¬μ©ν μ μκ² λ§λ λ€. μ°κ³λ νμΌμ λ μ½λ λ½(fcntl(2) μ°Έκ³ )μ΄ μ‘ν κ² μκ³ κ·Έ νλ‘μΈμ€ μμ μ΄λ©΄ (κ·Έ λ½μ μ»λ λ° μ΄λ€ νμΌ λμ€ν¬λ¦½ν°λ₯Ό μΌλμ§ μκ΄μμ΄) κ·Έ λ½μ μ κ±°νλ€.
fd
κ° νμ μ΄λ¦° νμΌ κΈ°μ νλͺ©(open(2) μ°Έκ³ )μ κ°λ¦¬ν€λ λ§μ§λ§ νμΌ λμ€ν¬λ¦½ν°μ΄λ©΄ κ·Έ μ΄λ¦° νμΌ κΈ°μ νλͺ© κ΄λ ¨ μμλ€μ΄ ν΄μ λλ€. λ κ·Έ νμΌ λμ€ν¬λ¦½ν°κ° unlink(2)λ‘ μ κ±°λ νμΌμ λν λ§μ§λ§ μ°Έμ‘°μ΄λ©΄ νμΌμ΄ μμ λλ€.
μ±κ³΅ μ close()
κ° 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
EBADF
-
fd
κ° μ ν¨ν μ΄λ¦° νμΌ λμ€ν¬λ¦½ν°κ° μλλ€. EINTR
-
close()
νΈμΆμ΄ μκ·Έλμ μν΄ μ€λ¨λμλ€. signal(7) μ°Έκ³ . EIO
- I/O μ€λ₯κ° λ°μνλ€.
-
ENOSPC
,EDQUOT
- NFSμμλ μ΄ μ€λ₯λ€μ΄ κ°μ© μ μ₯ 곡κ°μ μ΄κ³Όνλ 첫 λ²μ§Έ μ°κΈ°μμ μ μμ μΌλ‘ λ³΄κ³ λμ§ μκ³ μ΄νμ
write(2)
, fsync(2),close()
μμ λ³΄κ³ λλ€.
μ€λ₯ μ close()
λ₯Ό μ¬μλνμ§ λ§μμΌ νλ μ΄μ μ λν NOTESμ μ€λͺ
μ 보λΌ.
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
λ«κΈ°μ μ±κ³΅νλ€λ κ² λ°μ΄ν°κ° μ±κ³΅μ μΌλ‘ λμ€ν¬μ μ μ₯λλ€λ κ±Έ 보μ₯νμ§λ μλλ€. 컀λμμ λ²νΌ μΊμλ₯Ό μ¨μ μ°κΈ°λ₯Ό μ°κΈ°νκΈ° λλ¬Έμ΄λ€. μΌλ°μ μΌλ‘ νμΌ μμ€ν μμλ νμΌμ΄ λ«ν λ λ²νΌλ₯Ό νλ¬μ νμ§ μλλ€. κΈ°λ° λμ€ν¬μ λ°μ΄ν°κ° 물리μ μΌλ‘ μ μ₯λκ² ν΄μΌ νλ€λ©΄ fsync(2)λ₯Ό μ¨λΌ. (κ·Έ λ€μλΆν°λ λμ€ν¬ νλμ¨μ΄μκ² λ¬λ Έλ€.)
'execμμ λ«κΈ°' νμΌ λμ€ν¬λ¦½ν° νλκ·Έλ₯Ό μ°λ©΄ execve(2) μ±κ³΅ μ νμΌ λμ€ν¬λ¦½ν°κ° μλμΌλ‘ λ«νλλ‘ ν μ μλ€. μμΈν λ΄μ©μ fcntl(2) μ°Έκ³ .
κ·Έ νμΌ λμ€ν¬λ¦½ν°λ₯Ό κ°μ νλ‘μΈμ€μ λ€λ₯Έ μ€λ λμμ μμ€ν νΈμΆλ‘ μ¬μ© μ€μΌ μλ μμ λμμ λ«λ 건 그리 νλͺ ν μΌμ΄ μλλ€. νμΌ λμ€ν¬λ¦½ν°κ° μ¬μ¬μ©λ μλ μκΈ° λλ¬Έμ μλμΉ μμ λΆμμ©μ μ λ°νλ μ‘μλ΄κΈ° νλ κ²½μ μ‘°κ±΄μ΄ μμ μ μλ€.
μΈμ¬ν νλ‘κ·Έλλ¨ΈλΌλ©΄ close()
μ λ°ν κ°μ νμΈν κ²μ΄λ€. μμ write(2)
λμμμμ μ€λ₯κ° μ΄λ¦° νμΌ κΈ°μ νλͺ©μ ν΄μ νλ λ§μ§λ§ close()
μμλ§ λ³΄κ³ λλ μΌλ μΆ©λΆν κ°λ₯νκΈ° λλ¬Έμ΄λ€. νμΌμ λ«μ λ λ°ν κ° κ²μ¬λ₯Ό νμ§ μλ κ² μ‘°μ©ν λ°μ΄ν° μ μ€λ‘ μ΄μ΄μ§ μλ μλ€. νΉν NFSμ λμ€ν¬ μΏΌν°μμ μ΄λ° κ²½μ°λ₯Ό λ³Ό μ μλ€.
λ¨, μ€ν¨ λ°ν κ°μ μ§λ¨ μ©λ(μ¦ λ―Έμ²λ¦¬ I/Oκ° μμ§ μκ±°λ μ€ν¨ν I/Oκ° μμμ μλ μμμ μμ©μκ² μλ €μ£ΌκΈ°)λ 보μ μ©λ(κ°λ Ή νμΌμ ν λ² λ μ°κ±°λ λ°±μ λ§λ€κΈ°)λ‘λ§ μ°λ κ² μ’λ€.
μ€ν¨ λ°ν νμ close()
λ₯Ό μ¬μλνλ 건 λ°λμ§νμ§ λͺ»ν μ²λ¦¬ λ°©μμ΄λ€. λ€λ₯Έ μ€λ λμμ μ¬μ¬μ©λ νμΌ λμ€ν¬λ¦½ν°λ₯Ό λ«νκ² ν μλ μκΈ° λλ¬Έμ΄λ€. 리λ
μ€ μ»€λμμλ λ«κΈ° λμ μ΄λ°μμ νμ νμΌ λμ€ν¬λ¦½ν°λ₯Ό ν΄μ νμ¬ μ¬μ¬μ© λ μ μκ² λ§λ€κΈ° λλ¬Έμ κ·Έλ° μΌμ΄ μκΈΈ μ μλ€. νμΌ μμ€ν
μ΄λ μ₯μΉλ‘ λ°μ΄ν°λ₯Ό νλ¬μ νλ κ²μ²λΌ μ€λ₯λ₯Ό λ°νν μ μλ λ¨κ³λ€μ λ«κΈ° λμ νλ°μμ μ΄λ€μ§λ€.
μ¬λ¬ λ€λ₯Έ ꡬνλ€μμλ λ§μ°¬κ°μ§λ‘ μ΄ν close()
λ°νμμ μ€λ₯λ₯Ό λ³΄κ³ νλλΌλ (νμΌ λμ€ν¬λ¦½ν°κ° μ ν¨νμ§ μλ€λ λ»μΈ EBADF
κ²½μ°λ₯Ό μ μΈνκ³ ) νμΌ λμ€ν¬λ¦½ν°λ₯Ό νμ λ«λλ€. POSIX.1μμλ νμ¬ μ΄ μ μ λν΄ μ무 μΈκΈμ΄ μμ§λ§ νμ€ λ€μ μ£Ό λ¦΄λ¦¬μ€ λ μ΄ λμμ κ°μ νν κ³νμ΄ μλ€.
I/O μ€λ₯μ λν΄ μκ³ μΆμ μΈμ¬ν νλ‘κ·Έλλ¨ΈλΌλ©΄ close()
μ μ fsync(2) νΈμΆμ ν μ μλ€.
EINTR
μ€λ₯λ λ€μ νΉλ³ν κ²½μ°λ€. EINTR
μ€λ₯μ κ΄λ ¨ν΄ POSIX-1.2013μμλ λ€μκ³Ό κ°μ΄ λ§νλ€.
μ‘κ² λΌ μλ μκ·Έλμ μν΄
close()
κ° μ€λ¨λλ κ²½μ°errno
λ₯ΌEINTR
λ‘ μ€μ ν΄μ -1μ λ°νν΄μΌ νλ©°fildes
μ μνλ λͺ μΈλμ΄ μμ§ μλ€.
μ΄λ 리λ
μ€μ κΈ°ν μ¬λ¬ ꡬνμμ μ΄λ€μ§λ, close()
μμ λ³΄κ³ νλ λ€λ₯Έ μ€λ₯λ€κ³Ό λ§μ°¬κ°μ§λ‘ νμΌ λμ€ν¬λ¦½ν°κ° λ«νλ€κ³ 보μ₯λλ λμ λ°©μμ νμ©νλ€. νμ§λ§ μ΄λ λ€λ₯Έ κ°λ₯μ± λν νμ©νλ€. μ¦ κ΅¬νμμ EINTR
μ€λ₯λ₯Ό λ°ννλ©΄μ νμΌ λμ€ν¬λ¦½ν°λ₯Ό κ³μ μ΄μ΄ λ μλ μλ€. (λ¬Έμμ λ°λ₯΄λ©΄ HP-UXμ close()
μμ μ΄λ κ² νλ€.) κ·Έλ¬λ©΄ νΈμΆμλ νμΌ λμ€ν¬λ¦½ν° λμΆμ λ§κΈ° μν΄ ν λ² λ close()
λ₯Ό μ¨μ νμΌ λμ€ν¬λ¦½ν°λ₯Ό λ«μμΌ νλ€. μ΄λ¬ν ꡬν λμ λ°©μμ μ°¨μ΄λ μ΄μ κ°λ₯ν μμ©μ μ΄λ €μ΄ μ₯μ λ¬Όμ΄ λλ€. λ§μ ꡬνμμλ EINTR
μ€λ₯ νμ close()
λ₯Ό λ€μ νΈμΆν΄μ μ λμ§λ§ μ μ΄λ ν ꡬνμμλ close()
λ₯Ό λ€μ νΈμΆν΄μΌ νλ κ²μ΄λ€. POSIX.1 νμ€ λ€μ μ£Ό 릴리μ€μμ μ΄ λμ λ₯Ό λ€λ£¨λ €λ κ³νμ΄ μλ€.
fcntl(2), fsync(2), open(2), shutdown(2), unlink(2), fclose(3)
2017-09-15