Language/C언어
C053_dup2 함수 사용하기
OdOp 관리자
2024. 1. 11. 10:00
반응형
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 파일에 나타내게 됩니다.
반응형