Common Gateway Interface - Wikipedia
CGI는 웹서버를 위한 API 같은 것
역사
웹 서버 소프트웨어에서 프로그램을 호출할 때의 인터페이스 규칙 사양
CGI 프로그램: CGI 규칙에 맞게 움직이는 프로그램
웹은 대화형이 아니기 때문에, CGI는 입력 최대 1회, 출력 1회
웹서버가 POST method로 받은 내용은 CGI의 stdin으로 보낼 수 있다
CGI의 출력은 stdout으로 보내진다. HTML 데이터, 이미지 파일 등 모든 종류의 출력 생성 가능.
Content-type: text/html
printf("Content-type: text/html\\n\\n");
CGI와 관련환 환경변수들
REQUEST_METHOD
: 입력받은 메소드(POST, GET, HEAD)CONTENT_LENGTH
: stdin에서 읽어야하는 바이트수CONTENT_TYPE
: 데이터가 들어온 방식(form, etc.)PATH_INFO
: URL에서 CGI 프로그램명 뒤에 추가로 붙은 내용을 이 환경변수에 저장한다
http://example.com/cgi-bin/printenv.pl/with/additional/path?and=a&query=string
printenv.pl
: 프로그램 명/with/additional/path
: PATH_INFO
에 저장?and=a&query=string
: 환경변수 QUERY_STRING
에 저장, CGI 프로그램에 입력 됨일반적으로 CGI 프로그램 파일은 cgi-bin 디렉토리에 위치
접속 부분
)대화 부분
): 접속한 클라이언트 개수만큼 기동(멀티태스크/멀티스레드)
대화 부분
을 몇 개 만들어두고, 비어있는 대화 부분
에 소켓을 건너주는 방식으로 해결