Manpages

이 름

dup, dup2 − 파 일 디 스 크 립 터 를 복 사 한 다 .

사 용 법

#include <unistd.h>

int dup(int oldfd);
int dup2(int
oldfd, int newfd);

설 명

dup 그 리 고 dup2는 파 일 디 스 크 립 터 oldfd에 대 한 복 사 본 을 생 성 한 다 .

dup 또 는 dup2가 성 공 적 으 로 수 행 되 면 , oldfd 디 스 크 립 터 와 복 사 된 새 로 운 디 스 크 립 터 는 서 로 공 유 되 어 사 용 될 것 이 다 . 이 디 스 크 립 터 들 은 락 (lock), 파 일 위 치 포 인 터 그 리 고 플 래 그 를 공 유 한 다 ; 예 를 들 어 , 만 약 파 일 위 치 가 한 디 스 크 립 터 에 서 lseek를 사 용 해 변 경 되 면 이 변 경 된 위 치 는 다 른 디 스 크 립 터 에 도 영 향 을 미 친 다 .

그 러 나 이 두 디 스 크 립 터 는 close-on-exec 플 래 그 는 공 유 하 지 않 는 다 .

dup는 복 사 되 어 질 새 로 운 디 스 크 립 터 로 , 사 용 되 지 않 는 가 장 작 은 디 스 크 립 터 번 호 를 이 용 한 다 .

dup2는 필 요 하 다 면 먼 저 newfd를 닫 고 , oldfdnewfd 에 복 사 한 다 .

반 환 값

dup 그 리 고 dup2 는 복 사 된 새 로 운 디 스 크 립 터 를 리 턴 하 다 . 또 는 에 러 (errno 값 을 적 절 하 게 설 정 한 다 ) 가 발 생 한 경 우 에 는 −1을 리 턴 한 다 .

에 러

EBADF

oldfd이 열 린 파 일 디 스 크 립 터 가 아 니 거 나 , newfd가 파 일 디 스 크 립 터 의 허 용 된 범 위 를 넘 어 선 경 우 이 다 .

EMFILE

프 로 세 스 가 이 미 최 대 로 열 수 있 는 파 일 디 스 크 립 터 의 갯 수 를 가 진 상 태 에 서 새 로 운 파 일 디 스 크 립 터 를 열 고 자 시 도 한 경 우 이 다 .

경 고

newfd가 허 용 가 능 한 범 위 밖 의 값 일 때 , dup2에 의 해 리 턴 된 에 러 값 은 fcntl(..., F_DUPFD, ...)에 의 해 리 턴 된 에 러 값 과 는 다 르 다 . 어 떤 시 스 템 에 서 는 dup2F_DUPFD와 같 은 EINVAL을 리 턴 하 기 도 한 다 .

호 환

SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4에 서 는 추 가 적 으 로 EINTR와 ENOLINK 에 러 상 태 를 기 술 하 고 있 다 . POSIX.1는 EINTR을 추 가 했 다 .

관 련 항 목

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

역 자

정 동 현 <dhjung [AT] serome.kr>, 2000년 4월 20일