shutdown은 Half-close를 구현하기 위하여 사용되는 시스템 콜로, 소켓이 보유하고 있는 두 개의 스트림 중 한 스트림만을 끊는 기능을 가지고 있다.
#include <sys/socket.h>
/*
* sock : 종료할 소켓의 파일 디스크립터 전달
* howto : 종료방법에 대한 정보 전달
* 반환값 : 성공 시 0, 실패 시 -1 반환
*/
int shutdown(int sock, int howto); | 인자의 종료 | 기능 |
|---|---|
| SHUT_RD | 입력 스트림 종료 |
| SHUT_WR | 출력 스트림 종료 |
| SHUT_RDWR | 입출력 스트림 종료 |
shutdown의 두 번째 인자로 SHUT_RD가 전달되면 입력 스트림이 종료되어 더 이상 데이터를 수신할 수 없는 상태가 된다. 데이터가 입력버퍼에 전달되더라도 그냥 지워져 버릴 뿐만 아니라 입력 관련 함수의 호출도 더 이상 허용되지 않는다.
SHUT_WR이 두 번째 인자로 전달되면 출력 스트림이 종료되어 더 이상의 데이터 전송이 불가능해진다. 단, 출력 버퍼에 전송되지 못한 상태로 남아있는 데이터가 존재하면 해당 데이터는 목적지로 전송된다.
SHUT_RDWR을 사용하면 입출력 스트림이 모두 종료된다.
참고자료