On this page:

10.7 Exiting


(exit [v])  any

  v : any/c = #t
Passes v to the current exit handler. If the exit handler does not escape or terminate the thread, #<void> is returned.


(exit-handler)  (any/c . -> . any)

(exit-handler proc)  void?
  proc : (any/c . -> . any)
A parameter that determines the current exit handler. The exit handler is called by exit.

The default exit handler in the Racket executable takes any argument, calls plumber-flush-all on the original plumber, and shuts down the OS-level Racket process. The argument is used as the OS-level exit code if it is an exact integer between 1 and 255 (which normally means “failure”); otherwise, the exit code is 0, (which normally means “success”).


(executable-yield-handler)  (byte? . -> . any)

(executable-yield-handler proc)  void?
  proc : (byte? . -> . any)
A parameter that determines a procedure to be called as the Racket process is about to exit normally. The procedure associated with this parameter is not called when exit (or, more precisely, the default exit handler) is used to exit early. The argument to the handler is the status code that is returned to the system on exit. The default executable-yield handler simply returns #<void>.

The scheme/gui/base library sets this parameter to wait until all frames are closed, timers stopped, and queued events handled in the main eventspace. See scheme/gui/base for more information.