fd_close()
Close an open file descriptor.
Description
The fd_close()
function is used to close an open file descriptor. For sockets, this function will flush the data before closing the socket.
Syntax
;;; Note: This is similar to `close` in POSIX.
;;; Close a file descriptor.
(@interface func (export "fd_close")
(param $fd $fd)
(result $error (expected (error $errno)))
)
Parameters
ctx
: A mutable reference to the function environment.fd
: The file descriptor mapping to an open file to close.
Return Value
The function returns a Result
containing an Errno
value indicating the success or failure of the operation. An Errno::Success
value indicates a successful closure.
Errors
The function can return the following errors:
Errno::Isdir
: If the providedfd
corresponds to a directory.Errno::Badf
: If the providedfd
is invalid or not open.
Logging
This function has been instrumented with debug-level logging. It will log the following information:
pid
: The process ID of the current execution context.%fd
: The file descriptor being closed.err
: Any encountered error during the closing process.
Note
The fd_close()
function is used to close an open file descriptor. It releases any resources associated with the file descriptor.
For sockets, it is best practise to run sock_shutdown()
before closing, because otherwise it can have unexpected runtime and latency side affects in some wasm runtimes.