반응형
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 파일에 나타내게 됩니다.
반응형
'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 |