프로그램 종료

프로그램 종료 (Exiting)

Racket 프로그램이나 Racket 프로세스가 어떻게 종료되는지는 exit 함수와 종료 핸들러(exit handler)라는 매개변수에 의해 결정돼요. 이 문서에서는 exit, exit-handler, executable-yield-handler를 설명합니다.

출처: Racket Reference

본문

procedure
(exit [v]) → any
v : any/c = #t

v를 현재 종료 핸들러(exit handler)에게 전달합니다. 종료 핸들러가 스레드를 탈출하거나 종료시키지 않는다면, #<void>가 반환됩니다.

parameter
(exit-handler) → (any/c . -> . any)
(exit-handler proc) → void?
proc : (any/c . -> . any)

현재 종료 핸들러를 결정하는 매개변수입니다. 종료 핸들러는 exit에 의해 호출됩니다.

Racket 실행 파일의 기본 종료 핸들러는 어떤 인자든 받아서, 원래 plumber에 대해 plumber-flush-all을 호출하고, OS 레벨의 Racket 프로세스를 종료합니다. 인자가 1에서 255 사이의 정확한 정수(보통 '실패'를 의미)이면 그 인자가 OS 레벨 종료 코드로 사용되고, 그렇지 않으면 종료 코드는 0(보통 '성공'을 의미)입니다.

parameter
(executable-yield-handler) → (byte? . -> . any)
(executable-yield-handler proc) → void?
proc : (byte? . -> . any)

Racket 프로세스가 정상적으로 종료되려 할 때 호출될 프로시저를 결정하는 매개변수입니다. 이 매개변수와 연관된 프로시저는 exit(더 정확히는 기본 종료 핸들러)를 사용해 일찍 종료할 때는 호출되지 않습니다. 핸들러에게 전달되는 인자는 종료 시 시스템에 반환되는 상태 코드입니다. 기본 executable-yield 핸들러는 단순히 #<void>를 반환합니다.

racket/gui/base 라이브러리는 모든 프레임이 닫힐 때까지, 타이머가 멈출 때까지, 그리고 메인 이벤트스페이스에서 큐에 들어온 이벤트가 처리될 때까지 기다리도록 이 매개변수를 설정합니다. 자세한 내용은 racket/gui/base를 참고하세요.

더 알아보기