blob: 8f9a815cc05cdbbf56065e5ee5a28447a8b35c35 [file] [log] [blame] [view]
<!--
Copyright 2023 The Fuchsia Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
DO NOT EDIT. Generated from FIDL library zx by zither, a Fuchsia platform tool.
See //docs/reference/syscalls/README.md#documentation-generation for
regeneration instructions.
-->
# zx_handle_close
## Summary
Close a handle.
## Declaration
```c
#include <zircon/syscalls.h>
zx_status_t zx_handle_close(zx_handle_t handle);
```
## Description
`zx_handle_close()` closes a *handle*, causing the underlying object to be
reclaimed by the kernel if no other handles to it exist.
If the *handle* was used in a pending [`zx_object_wait_one()`] or a
[`zx_object_wait_many()`] call, the wait will be aborted.
It is not an error to close the special "never a valid handle" **ZX_HANDLE_INVALID**,
similar to `free(NULL)` being a valid call.
Closing the last handle to a peered object using `zx_handle_close()` can affect
the state of the object's peer (if any). See also
[peered-objects][peered-objects].
## Rights
None.
## Return value
`zx_handle_close()` returns **ZX_OK** on success.
## Errors
**ZX_ERR_BAD_HANDLE** *handle* isn't a valid handle.
## See also
<!-- Reference links -->
[peered-objects]: /docs/reference/kernel_objects/objects.md#peered-objects-and-the-peer-closed-state
- [`zx_handle_close_many()`]
- [`zx_handle_duplicate()`]
- [`zx_handle_replace()`]
[`zx_handle_close_many()`]: handle_close_many.md
[`zx_handle_duplicate()`]: handle_duplicate.md
[`zx_handle_replace()`]: handle_replace.md
[`zx_object_wait_many()`]: object_wait_many.md
[`zx_object_wait_one()`]: object_wait_one.md