본문 바로가기

CS

dup, dup2 , 파일 서술자 복제 함수

네트워크 공부를 하다가 cgi 프로그램에서 표준 출력으로 컨텐츠를 전송하는 방식으로 구현된다고 나와있었다.  궁금해서 dup2에 대해 찾아봤다.

dup 와 dup2는 파일 디스크립터를 복사하는 시스템 콜이다.

#include <unistd.h>
int dup(int fd);

dup는 fd로 받은  파일 서술자를  복제하여 반환하는데 사용되지 않은 가장 낮은 서술자를 반환합니다.

#include <unistd.h>
int dup2(int src, int dst);

매개변수만 보면 src를 dst로 옮기는 것 같은데, dup2는 dst가 가리키는 출력을 src로 바꾸는 함수다.  예를 들어 dst가 1이라면 stdout의 결과가 src에 출력이 되는 것이다. 

위의 내용을 정리해서 cgi 프로그램 이야기를 다시 하자면, CGI 프로그램이 클라이언트에 보낼 필요가 있을 때 CGI프로그램을 로드하고 실행하기 전에 리눅스 dup2함수를 사용해서 표준 출력을 클라이언트와 연계된 연결 식별자로 재지정 하면 우리가 원하는 결과를 얻을 수 있는 것이다.

'CS' 카테고리의 다른 글

프로시저  (0) 2021.10.02
전통적 동기화 문제와 데드락  (0) 2021.09.26
동시성 이슈  (0) 2021.09.25
Nonlocal jumps  (0) 2021.09.24
Volatile 지정자  (0) 2021.09.24