---
name: "Tcl_CreateCloseHandler"
section: "3"
platform: "linux"
package: "tcl"
version: "8.6.16-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Tcl_CreateCloseHandler"
---

# Tcl\_CreateCloseHandler(3)

arrange for callbacks when channels are closed

```

```

## NAME

Tcl\_CreateCloseHandler, Tcl\_DeleteCloseHandler - arrange for callbacks when channels are closed

## SYNOPSIS

```
#include <tcl.h>

void
Tcl_CreateCloseHandler(channel, proc, clientData)

void
Tcl_DeleteCloseHandler(channel, proc, clientData)

```

## ARGUMENTS

- Tcl\_Channel *channel* (in)

  The channel for which to create or delete a close callback.

- Tcl\_CloseProc *\*proc* (in)

  The procedure to call as the callback.

- ClientData *clientData* (in)

  Arbitrary one-word value to pass to *proc*.

  ```

  ```

## DESCRIPTION

**Tcl\_CreateCloseHandler** arranges for *proc* to be called when *channel* is closed with **Tcl\_Close** or **Tcl\_UnregisterChannel**, or using the Tcl **close** command. *Proc* should match the following prototype:

```
typedef void Tcl_CloseProc(
        ClientData clientData);
```

The *clientData* is the same as the value provided in the call to **Tcl\_CreateCloseHandler**.

**Tcl\_DeleteCloseHandler** removes a close callback for *channel*. The *proc* and *clientData* identify which close callback to remove; **Tcl\_DeleteCloseHandler** does nothing if its *proc* and *clientData* arguments do not match the *proc* and *clientData* for a  close handler for *channel*.

## SEE ALSO

[close(n)](/close/n.md), [Tcl\_Close(3)](/Tcl_Close/3.md), [Tcl\_UnregisterChannel(3)](/Tcl_UnregisterChannel/3.md)

## KEYWORDS

callback, channel closing
