본문 바로가기
Language/C언어

C053_dup2 함수 사용하기

by OdOp 관리자 2024. 1. 11.
SMALL

dup2는 어제 보았던 dup의 상위 호환 버전이라고 생각하면 좋을 것 같습니다. 

 

dup는 파일 디스크립터를 단순히 복제하는 데에 그쳤습니다. 

dup2는 여기서 한발 더 나아가 파일 디스크립터를 원하는 번호로 복제를 진행을 합니다. 

 

예를 들어 "out"이라는 파일을 "STDOUT_FILENO"로 복제하여 출력값을 out파일에서 받을 수 있습니다. 

 

dup2

#include <unistd.h>

int	dup2(int fd, int fd2);

 

fd는 복사하고자 하는 파일 디스크립터고 fd2는 복제된 파일 디스크립터의 번호를 나타냅니다. 

성공 시 fd2를 반환하고 실패 시 -1을 반환합니다. 

 

#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>

int main(void)
{
    int fd;

    fd = open("./out", O_CREAT | O_TRUNC | O_WRONLY, 0777);
    if (fd < 0)
        return (0);
    printf("printf before dup2\n");
    if (dup2(fd, STDOUT_FILENO) < 0)
    {
        close(fd);
        return (0);
    }
    close(fd);
    printf("printf arter dup2\n");
    return (0);
}

 

표준 출력이 out 파일로 되게끔 바꾸는 모습입니다. 

 

"printf before dup2"는 터미널에 출력이 되지만 

"printf after dup2"는 out 파일에 나타내게 됩니다. 

LIST

'Language > C언어' 카테고리의 다른 글

C055_pipe 함수 사용하기  (1) 2024.01.13
C054_open 함수 사용하기  (0) 2024.01.12
C052_dup 함수 사용하기  (0) 2024.01.10
C051_waitpid 함수 사용하기  (1) 2024.01.09
C050_wait 함수 사용하기  (1) 2024.01.08