DUP
Section: 리눅스 프로그래머 매뉴얼 (2)
Updated: 1994년 8월 21일
Index
Return to Main Contents
이름
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을 리턴한다.
에러
- EBADF
-
oldfd이
열린 파일 디스크립터가 아니거나,
newfd가
파일 디스크립터의 허용된 범위를 넘어선 경우이다.
- EMFILE
-
프로세스가 이미 최대로 열 수있는 파일 디스크립터의 갯수를 가진 상태에서
새로운 파일 디스크립터를 열고자 시도한 경우이다.
경고
newfd가
허용 가능한 범위 밖의 값일 때,
dup2에
의해 리턴된 에러값은
fcntl(..., F_DUPFD, ...)에
의해 리턴된 에러값과는 다르다. 어떤 시스템에서는
dup2가
F_DUPFD와
같은
EINVAL을
리턴하기도 한다.
호환
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4에서는 추가적으로
EINTR와 ENOLINK 에러 상태를 기술하고 있다. POSIX.1는 EINTR을
추가했다.
관련 항목
fcntl(2),
open(2),
close(2).
역자
정동현 <dhjung@serome.co.kr>, 2000년 4월 20일
Index
- 이름
-
- 사용법
-
- 설명
-
- 반환값
-
- 에러
-
- 경고
-
- 호환
-
- 관련 항목
-
- 역자
-
This document was created by
man2html,
using the manual pages.
Time: 08:07:00 GMT, March 25, 2004