dup

Autres langues

Langue: ja

Autres versions - même langue

Version: 1994-08-21 (openSuse - 09/10/07)

Section: 2 (Appels système)

̾Á°

dup, dup2 - ¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òÊ£À½¤¹¤ë

½ñ¼°


#include <unistd.h>



int dup(int oldfd);

int dup2(int oldfd, int newfd);

ÀâÌÀ

dup() ¤È dup2() ¤Ï¡¢¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿ oldfd ¤ÎÊ£À½¤òºî¤ë¡£

dup() ¤Þ¤¿¤Ï dup2() ¤¬À®¸ù¤òÊÖ¤·¤¿¾ì¹ç¤Ë¤Ï¡¢ ¸Å¤¤¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤È¿·¤·¤¤¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï ¸ß¤¤¤Ë²Ä´¹¤Ê¤â¤Î¤È¤·¤Æ»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ 2¤Ä¤Î¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ÏƱ¤¸¥Õ¥¡¥¤¥ëµ­½Ò (description) (open(2) »²¾È) ¤ò»²¾È¤·¤Æ¤ª¤ê¡¢¤·¤¿¤¬¤Ã¤Æ¥Õ¥¡¥¤¥ë¥ª¥Õ¥»¥Ã¥È¤ä¥Õ¥¡¥¤¥ë¾õÂ֥ե饰¤¬ ¶¦Í­¤µ¤ì¤ë¡£Î㤨¤Ð¡¢°ìÊý¤Î¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ËÂФ·¤Æ lseek(2) ¤ò»È¤Ã¤Æ¥Õ¥¡¥¤¥ë¥ª¥Õ¥»¥Ã¥È¤òÊѹ¹¤·¤¿¾ì¹ç¡¢¤â¤¦°ìÊý¤Î¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î ¥ª¥Õ¥»¥Ã¥È¤âÊѲ½¤¹¤ë¡£

2¤Ä¤Î¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¦¥Õ¥é¥° (close-on-exec flag) ¤ò¶¦Í­¤·¤Ê¤¤¡£Ê£À½¤µ¤ì¤¿¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î close-on-exec flag (fcntl(2) »²¾È) ¤Ï off ¤È¤Ê¤ë¡£

dup() ¤Ï»ÈÍѤµ¤ì¤Æ¤¤¤Ê¤¤ºÇ¾®¤ÎÃͤΥǥ£¥¹¥¯¥ê¥×¥¿¤ò¿·¤·¤¤¥Ç¥£¥¹¥¯¥ê¥×¥¿ ¤È¤·¤Æ»ÈÍѤ¹¤ë¡£

dup2() ¤Ï oldfd ¤ÎÊ£À½¤È¤·¤Æ newfd ¤òºîÀ®¤¹¤ë¡£É¬Íפʤé¤ÐºÇ½é¤Ë newfd ¤ò¥¯¥í¡¼¥º (close) ¤¹¤ë¡£

ÊÖ¤êÃÍ

dup() ¤È dup2() ¤Ï¿·¤·¤¤¥Ç¥£¥¹¥¯¥ê¥×¥¿¤òÊÖ¤¹¡£¥¨¥é¡¼¤Î¾ì¹ç¤Ï -1 ¤òÊÖ¤¹ (¤½¤Î»þ errno ¤ËŬÀÚ¤ÊÃͤ¬ÀßÄꤵ¤ì¤ë¡£)

¥¨¥é¡¼

EBADF
oldfd ¤¬¥ª¡¼¥×¥ó¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤Ê¤¤¤«¡¢ newfd ¤¬¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤È¤·¤Æµö¤µ¤ì¤ëÈϰϤ«¤é³°¤ì¤Æ¤¤¤ë¡£
EBUSY
(Linux ¤Î¤ß) open(2) ¤ä dup() ¤È¤Î¶¥¹ç¾õÂ֤ξì¹ç¤Ë¡¢ dup2() ¤Ï¤³¤Î¥¨¥é¡¼¤òÊÖ¤¹¤«¤â¤·¤ì¤Ê¤¤¡£
EINTR
dup2() ¤Î¸Æ¤Ó½Ð¤·¤¬¥·¥°¥Ê¥ë¤Ë¤è¤Ã¤Æ³ä¤ê¹þ¤Þ¤ì¤¿ (interrupt)¡£
EMFILE
¥×¥í¥»¥¹¤¬¤¹¤Ç¤Ë¥ª¡¼¥×¥ó¤Ç¤­¤ëºÇÂç¿ô¤Þ¤Ç¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿ ¤ò³«¤¤¤Æ¤¤¤Æ¡¢¤µ¤é¤Ë¿·¤·¤¤¤â¤Î¤ò³«¤³¤¦¤È¤·¤¿¡£

½àµò

SVr4, 4.3BSD, POSIX.1-2001.

Ãí°Õ

newfd ¤¬ÈϰϤòĶ¤¨¤¿»þ¤ËÊÖ¤µ¤ì¤ë¥¨¥é¡¼¤Ï¡¢ dup2() ¤È fcntl(..., F_DUPFD, ...) ¤Ç¤Ï°Û¤Ã¤Æ¤¤¤ë¡£ dup2() ¤¬ F_DUPFD ¤ÈƱ¤¸¤è¤¦¤Ë EINVAL ¤òÊÖ¤¹¥·¥¹¥Æ¥à¤â¤¢¤ë¡£

newfd ¤¬¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤ë¤È¡¢ close(2) ¤·¤¿»þ¤ËÊó¹ð¤µ¤ì¤ë¤Ï¤º¤Î¥¨¥é¡¼¤¬¼º¤ï¤ì¤Æ¤·¤Þ¤¦¡£ dup2() ¤ò»È¤¦Á°¤ËÀ褺 newfd ¤ò¥¯¥í¡¼¥º¤¹¤ë¤è¤¦¤Ë¤·¤¿Êý¤¬¤¤¤¤¤À¤í¤¦¡£

´ØÏ¢¹àÌÜ

close(2), fcntl(2), open(2)