dup

ëªì¹
     dup, dup2 — 기존ì íì¼ ê¸°ì ì를 ë³µì íë¤

íë¡ê·¸ë¨ ë¼ì´ë¸ë¬ë¦¬
     Standard C Library (libc, -lc)

ìì
     <unistd.h> int dup(int oldd) int dup2(int oldd, int newd)

í´ì¤
     dup() (ì)ë 기존ì ì¤ë¸ì í¸ ê¸°ì ì를 ë³µì í´, ê·¸ ê°ì í¸ì¶í´ íë¡ì¸ì¤ì
     ëë ¤ì¤ëë¤ (newd = dup(oldd)).  ì¸ì oldd (ì)ë íë¡ì¸ì¤ì 기ì ì íì´ë¸ë´ì
     ì¸ë±ì¤ë¡, ë¶ê° ìë ìì ì ììëë¤.  ê·¸ ê°ì íì´ë¸ì ì¬ì´ì¦ë³´ë¤ ìì§ ìì¼ë©´
     ìë©ëë¤.  íì´ë¸ì ì¬ì´ì¦ë getdtablesize(2) ì ìí´ ëë ¤ì£¼ì´ì§ëë¤.  dup()
     í¸ì¶ì, ê·¸ ëì íë¡ì¸ì¤ì ìí´ ì¬ì©ëì´ ìì§ ìì ë²í¸ ê°ì´ë°, ê°ì¥ ìì ë²í¸ê° ë¶ì
     기ì ì를 ëë ¤ì¤ëë¤.

     기ì ìê° ì°¸ì¡°íë ì¤ë¸ì í¸ë oldd (ì)ê³¼ newd (ì)를 ì í 구ë³íì§ ììµëë¤.
     ë°ë¼ì newd (ì)ê³¼ oldd íì§ë§ ì¤íë íì¼ìì ë³µì ë 참조ìë ê²½ì°, 모ë
     read(2), write(2) ë° lseek(2) í¸ì¶ì, ë¨ì¼ì í¬ì¸í°ë¥¼ íì¼ë´ìì ì´ëí©ëë¤.
     ì¶ê° 모ë, ë¼ë¸ë¡í¹ ìì¶ë ¥ ë° ë¹ë기 ìì¶ë ¥ ìµìì ê° ì°¸ì¡°ëììì
     ê³µì ë©ëë¤.  íëì íì¼ìì ë¤ë¥¸ í¬ì¸í°ê° íìí ê²½ì°ë, ì¶ê°ì open(2) (ì)를
     í¸ì¶í´, íì¼ìì ë¤ë¥¸ ì¤ë¸ì í¸ ì°¸ì¡°ë¥¼ ì»ì íìê° ììµëë¤. ì´ ë, ìë¡ì´ íì¼
     기ì ìì close-on-exec íëê·¸ë ì¤ì  í´ì ëê³  ììµëë¤.

     dup2() ìë ìë¡ì´ 기ì ì newd ì ê°ì ì§ì í©ëë¤. ì´ ê¸°ì ìê° ì´ë¯¸ ì¬ì©ëê³
     ììì ê²½ì°, oldd newd ì´ë©´, ì°ì  ê·¸ 기ì ìë close(2) íì§ë§ ë¶ë ¤
     ê°ëì§ì ê°ì´ í ë¹ í´ì ë©ëë¤.  oldd íì§ë§ ì í¨í 기ì ìê° ìëìë ê²½ì°ìë, newd
     (ì)ë í´ë¡ì°ì¦ ëì§ ììµëë¤.  oldd == newd (ì´ì´)ì¬, ê²ë¤ê° oldd íì§ë§ ì í¨í
     기ì ìì ê²½ì°, dup2() (ì)ë ì ìì ì¼ë¡ ì¢ë£í´, ì무ê²ë íì§ ììµëë¤.

ë°íê°
     ëªê°ì í¸ì¶ë¡ ìë¬ê° ì¼ì´ë¬ì ê²½ì°ë ê° -1 ì´ ëë ¤ì£¼ì´ì§ëë¤.  ì¸ë¶ ë³ì
     errno (ì)ë ìë¬ì ìì¸ì ëíëëë¤.

ìë¬
     dup() (ì)ê³¼ dup2() (ì)ë ë¤ìì ê²½ì°ì ì²ë¦¬ì ì¤í¨í©ëë¤.

     [EBADF]            oldd ëë newd íì§ë§ ì í¨í ì¡í°ë¸ 기ì ìê° ìëëë¤.

     [EMFILE]           ì¡í°ë¸í 기ì ìê° ë무 ë§ìµëë¤.

ê´ë ¨ í목
     accept(2), close(2), fcntl(2), getdtablesize(2), open(2), pipe(2),
     socket(2), socketpair(2)

íì¤
     dup() í¨ìì dup2() í¨ìë, ISO/IEC 9945-1:1990 (“POSIX.1”) ì ì¤ê±°íê³
     ììµëë¤.

ìì¬
     dup() í¨ìì dup2() í¨ìë Version 7 AT&T UNIX ê·¸ë¦¬ê³  ë±ì¥íìµëë¤.