포트 관리
포트 관리 (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
v가 eof이면 #t를, 그렇지 않으면 #f를 돌려줘요.
더 알아보기
- Port Operations — 포트 연산의 개요.
- Port Buffers and Positions — 포트 버퍼와 위치.