close-port - close a port
(import (rnrs)) ;R6RS
(import (rnrs io ports)) ;R6RS
(import (scheme base)) ;R7RS
Closes the port, rendering the port incapable of delivering or accepting data.
If port is an output port, it is flushed before being closed. This has
no effect if the port has already been closed. A closed port is still a port.
- R6RS
- If port is a custom port then the closer procedure is called before
the port is really closed.
Returns unspecified values.
(define p (open-output-file "hello.txt"))
(display "Hello, world\n" p)
(close-port p)
Ports are often connected to some limited resource, such as a file descriptor.
Closing ports is important to avoid resource leaks. Some implementations will
garbage collect ports, but this is not required.
This procedure is new in R6RS and R7RS.
This procedure can raise exceptions with the following condition types:
- &assertion (R6RS)
- The wrong number of arguments was passed or an argument was outside its
domain.
- R7RS
- The assertions described above are errors. Implementations may signal an
error, extend the procedure's domain of definition to include such
arguments, or fail catastrophically.
It is often better to use call-with-port(3scm) or one of the related
procedures. They make it easier to ensure that a port is closed when an
exception is raised.