---
name: "Tcl_CallWhenDeleted"
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_CallWhenDeleted"
---

# Tcl\_CallWhenDeleted(3)

Arrange for callback when interpreter is deleted

```

```

## NAME

Tcl\_CallWhenDeleted, Tcl\_DontCallWhenDeleted - Arrange for callback when interpreter is deleted

## SYNOPSIS

```
#include <tcl.h>

Tcl_CallWhenDeleted(interp, proc, clientData)

Tcl_DontCallWhenDeleted(interp, proc, clientData)
```

## ARGUMENTS

- Tcl\_Interp *\*interp* (in)

  Interpreter with which to associated callback.

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

  Procedure to call when *interp* is deleted.

- ClientData *clientData* (in)

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

  ```

  ```

## DESCRIPTION

**Tcl\_CallWhenDeleted** arranges for *proc* to be called by **Tcl\_DeleteInterp** if/when *interp* is deleted at some future time.  *Proc* will be invoked just before the interpreter is deleted, but the interpreter will still be valid at the time of the call. *Proc* should have arguments and result that match the type **Tcl\_InterpDeleteProc**:

```
typedef void Tcl_InterpDeleteProc(
        ClientData clientData,
        Tcl_Interp *interp);
```

The *clientData* and *interp* parameters are copies of the *clientData* and *interp* arguments given to **Tcl\_CallWhenDeleted**. Typically, *clientData* points to an application-specific data structure that *proc* uses to perform cleanup when an interpreter is about to go away. *Proc* does not return a value.

**Tcl\_DontCallWhenDeleted** cancels a previous call to **Tcl\_CallWhenDeleted** with the same arguments, so that *proc* will not be called after all when *interp* is deleted. If there is no deletion callback that matches *interp*, *proc*, and *clientData* then the call to **Tcl\_DontCallWhenDeleted** has no effect.

Note that if the callback is being used to delete a resource that *must* be released on exit, **Tcl\_CreateExitHandler** should be used to ensure that a callback is received even if the application terminates without deleting the interpreter.

## SEE ALSO

[Tcl\_CreateExitHandler(3)](/Tcl_CreateExitHandler/3.md), [Tcl\_CreateThreadExitHandler(3)](/Tcl_CreateThreadExitHandler/3.md)

## KEYWORDS

callback, cleanup, delete, interpreter
