DUP(2) | 리눅스 프로그래머 매뉴얼 | DUP(2) |
이름¶
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를 닫고, oldfd를 newfd 에 복사한다.
반환값¶
dup 그리고 dup2 는 복사된 새로운 디스크립터를 리턴하다. 또는 에러 (errno 값을 적절하게 설정한다) 가 발생한 경우에는 -1을 리턴한다.
에러¶
경고¶
newfd가 허용 가능한 범위 밖의 값일 때, dup2에 의해 리턴된 에러값은 fcntl(..., F_DUPFD, ...)에 의해 리턴된 에러값과는 다르다. 어떤 시스템에서는 dup2가 F_DUPFD와 같은 EINVAL을 리턴하기도 한다.
호환¶
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4에서는 추가적으로 EINTR와 ENOLINK 에러 상태를 기술하고 있다. POSIX.1는 EINTR을 추가했다.
관련 항목¶
역자¶
정동현 <dhjung@serome.co.kr>, 2000년 4월 20일
1994년 8월 21일 | 리눅스 1.1.46 |