Joinc 팀블로그 리눅스 메뉴얼 정리 Joinc 위키
댓글

Recent Comments

Powered by Disqus
팀블로그 카테고리
  전체 (1105)
   공지사항 (1)
   검색엔진 (21)
   기술동향 (58)
   게임 (2)
   독서 (6)
   리눅스 (12)
   보안 (1)
   사회문제 (22)
   어셈블리 (43)
   영화 (3)
   오픈소스 (10)
   음악 (9)
   인물 (1)
   포인터 (4)
   프로그래머 (23)
   팀블로그 (20)
   테터툴즈 (29)
   C/C++ (152)
   FireFox (11)
   Gimp (2)
   Google (98)
   Java (13)
   Perl (2)
   Pthread (11)
   STL (13)
   TCP/IP (8)
   Tools (31)
   Web2.0 (42)
   Wiki (1)
«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
2007/05/08 00:41

dup - 파일 지정번호를 복사한다.

1장. dup(2)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 에러
1.5절. 예제
1.6절. 참고문헌

파일 지정자를 복사한다.


1.1절. 사용법

#include <unistd.h>

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


1.2절. 설명

dup()와 dup2()는 파일 지정자 oldfd에 대한 복사본을 생성한다. 성공적으로 수행될경우 oldfd 지정자에 대한 복사본은 서로 공유되어서 사용된다. 즉 lock, 파일위치 포인터, 플래그등을 공유한다. 만약 원본 파일지정자 에서 위치변경이 일어 났다면, 다른 복사된 파일지정자에도 영향을 미친다.

그러나 이 두개의 파일지정자간 close-on-exe 플래그는 공유되지 않는다.

dup()를 이용해서 복사되어지는 새로운 파일 지정자는 사용되지 않는 가장 작은 파일 지정자를 이용한다. dup2()는 디스크립터는 파일 지정자를 지정할 수 있는데, 이전에 열린 newfd가 있다면 닫고 나서, oldfdnewfd에 복사하면 된다.


1.3절. 반환값

복사된 새로운 파일지정자를 리턴한다. 에러가 발생하면 -1 을 리턴한다.


1.4절. 에러

EBADF

oldfd 가 열린 파일 지정자가 아닐경우

EMFILE

프로세스가 최대로 열수 있는 파일 지정자 갯수를 가진 상태에서 새로운 파일지정자를 얻고자 시도하는 경우


1.5절. 예제

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
int fd, fd2;
char buf[80];

fd = open("dup.c", O_RDONLY);
fd2 = dup(fd);
printf("%d = %d\n", fd, fd2);

memset(buf, 0x00, 80);
read(fd, buf, 20);
printf("fd : %d\n%s\n", fd, buf);

memset(buf, 0x00, 80);
read(fd2, buf, 20);
printf("fd : %d\n%s\n", fd2, buf);

close(fd);
}


1.6절. 참고문헌

  1. dup 활용

:::