설명

파일 디스크립터 복사본을 만듭니다. 원본 디스크립터와 복사된 디스크립터의 읽기/쓰기 포인터는 공유됩니다. 즉, 원본과 복사본 디스크립터마다 따로 읽기/쓰기 포인터가 존재하지 않습니다.

헤더 unistd.h
형태 int dup(int fildes);
인수 int fildes 파일 디스크립터
반환 int 복사된 파일 디스크립터 번호로 사용되지 않은 가장 작은 번호가 자동으로 지정되어 반환됩니다.
함수 실행이 실패되면 -1 이 반환됩니다.
예제
#include <stdio.h>         // puts()
#include <string.h>        // strlen(), memset()
#include <fcntl.h>         // O_RDWR, O_CREAT
#include <unistd.h>        // write(), close(), dup()

#define  BUFF_SIZE   1024

int main()
{
   int   fd_wr;
   int   fd_rd;
   char  buff[BUFF_SIZE];
   char *str   = "forum.falinux.com";

   fd_wr = open( "./test.txt", O_RDWR ¦ O_CREAT ¦ O_TRUNC, 0644);
   fd_rd = dup( fd_wr);

   write(  fd_wr, str, strlen( str));

   close( fd_wr);                        // fd_wr 닫음

   lseek( fd_rd, 0, SEEK_SET);
   memset( buff, '\0', BUFF_SIZE);
   read( fd_rd, buff, BUFF_SIZE);

   printf( "%s\n", buff);

   close( fd_rd);                        // fd_rd 닫음

   return 0;
}
]$ ./a.out
forum.falinux.com
]$