포트 관리

포트 관리 (Managing Ports)

포트(port)는 Racket에서 입출력을 다루는 기본 단위예요. 입력 포트와 출력 포트를 만들고 닫고, 현재 사용할 기본 포트를 지정하며, 포트의 상태(파일 스트림인지, 터미널에 붙었는지 등)를 확인하는 함수들이 이 절에 모여 있어요.

출처: Racket Reference

본문

procedure

(input-port? v) → boolean?
  v : any/c

v가 입력 포트면 #t를, 그렇지 않으면 #f를 돌려줘요.

procedure

(output-port? v) → boolean?
  v : any/c

v가 출력 포트면 #t를, 그렇지 않으면 #f를 돌려줘요.

procedure

(port? v) → boolean?
  v : any/c

(input-port? v) 또는 (output-port? v)#t이면 #t를, 그렇지 않으면 #f를 돌려줘요.

procedure

(close-input-port in) → void?
  in : input-port?

입력 포트 in을 닫아요. 어떤 종류의 포트는 닫으면 파일 핸들 같은 하위 레벨 리소스가 해제돼요. 포트가 이미 닫혀 있으면 close-input-port는 효과가 없어요.

procedure

(close-output-port out) → void?
  out : output-port?

출력 포트 out을 닫아요. 어떤 종류의 포트는 닫으면 파일 핸들 같은 하위 레벨 리소스가 해제돼요. 또한 포트가 버퍼링되어 있으면 닫기 전에 먼저 포트를 플러시할 수 있고, 이 플러시 과정은 블록될 수 있어요. 포트가 이미 닫혀 있으면 close-output-port는 효과가 없어요.

procedure

(port-closed? port) → boolean?
  port : port?

입력·출력 포트 port가 닫혀 있으면 #t를, 그렇지 않으면 #f를 돌려줘요.

procedure

(port-closed-evt port) → evt?
  port : port?

port가 닫힐 때 동기화가 준비되는 동기화 가능 이벤트를 돌려줘요. port-closed 이벤트의 동기화 결과는 port-closed 이벤트 그 자체예요.

parameter

(current-input-port) → input-port?
(current-input-port in) → void?
  in : input-port?

read 같은 많은 연산에 대한 기본 입력 포트를 결정하는 파라미터예요.

parameter

(current-output-port) → output-port?
(current-output-port out) → void?
  out : output-port?

write 같은 많은 연산에 대한 기본 출력 포트를 결정하는 파라미터예요.

parameter

(current-error-port) → output-port?
(current-error-port out) → void?
  out : output-port?

보통 오류와 로깅에 사용되는 출력 포트를 결정하는 파라미터예요. 예를 들어 기본 오류 표시 핸들러는 이 포트에 써요.

procedure

(file-stream-port? v) → boolean?
  v : any/c

v가 파일 스트림 포트(File Ports 참고)면 #t를, 그렇지 않으면 #f를 돌려줘요.

base 패키지의 7.2.0.5 버전에서 file-stream-port?의 도메인을 포트로 제한하던 것을 임의의 값으로 확장했어요.

procedure

(terminal-port? v) → boolean?
  v : any/c

v가 대화형 터미널에 붙은 포트면 #t를, 그렇지 않으면 #f를 돌려줘요.

base 패키지의 7.2.0.5 버전에서 terminal-port?의 도메인을 포트로 제한하던 것을 임의의 값으로 확장했어요.

procedure

(port-waiting-peer? port) → boolean?
  port : port?

port가 피어 프로세스의 스트림 구성 완료를 기다리고 있기 때문에 읽기나 쓰기에 준비되지 않았으면 #t를, 그렇지 않으면 #f를 돌려줘요.

Unix와 Mac OS에서 같은 fifo에 대한 읽는 쪽이 이미 열려 있지 않으면, fifo를 출력용으로 열면 피어 대기 중(peer-waiting) 포트가 만들어져요. 그 경우 출력 포트는 읽는 쪽이 열릴 때까지 쓰기 준비가 되지 않아요. 즉 쓰기 연산이 블록돼요. 필요하면 sync를 사용해 쓰기가 블록되지 않을 때까지—즉 fifo의 읽는 쪽이 열릴 때까지—대기해요.

base 패키지의 7.4.0.5 버전에서 추가됐어요.

value

eof : eof-object?

파일의 끝을 나타내는 (다른 모든 값과 구별되는) 값이에요.

procedure

(eof-object? v) → boolean?
  v : any/c

veof이면 #t를, 그렇지 않으면 #f를 돌려줘요.

더 알아보기