-
C/C++ dup()C,C++ & Linux 2020. 5. 16. 23:11728x90
dup(2) 함수 기능
파일 디스크립터를 복사해줍니다.
함수 원형
#include <unistd.h> int dup(int fd);
매개변수
fd
복사할 파일 디스크립터
반환값
성공 시 복사된 파일 디스크립터 빈 파일 디스크립터 중 가장 작은 값이 리턴됩니다.
에러 시 -1 리턴과 errno 설정
예제
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> // for open #include <sys/types.h> #include <sys/stat.h> #define BUFFER_SIZE 1024 int main(int argc, char *argv[]) { char buf[BUFFER_SIZE]; char *fname = "ssu_test.txt"; int count; int fd1, fd2; // fd1 = ssu_test.txt fd1 = open(fname, O_RDONLY, 0644); // fd2 = copy of fd1 fd2 = dup(fd1); // 처음 12 글자 출력 count = read(fd1, buf, 12); buf[count] = 0; printf("fd1's printf : %s\n", buf); lseek(fd1, 1, SEEK_CUR); // fd2에서 read 하지만 fd1과 fd2는 파일 오프셋을 공유하기에 이어서 읽는 효과가 남 count = read(fd2, buf, 12); buf[count] = 0; printf("fd2's printf : %s\n", buf); exit(0); }
결과
리눅스시스템프로그래밍 저자 : 홍지만
https://book.naver.com/bookdb/book_detail.nhn?bid=14623672
책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)'C,C++ & Linux' 카테고리의 다른 글
C/C++ sync(2), fsync(2), fdatasync(2) (0) 2020.05.16 C/C++ dup2() (0) 2020.05.16 C/C++ pread(), pwrite() (0) 2020.05.14 C/C++ write() (0) 2020.05.14 C/C++ close() 함수 (0) 2020.05.14