## Tcl8.6.0/Tk8.6.0 Documentation > Tcl C API, version 8.6.0 > CallDel

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

### NAME

Tcl_CallWhenDeleted, Tcl_DontCallWhenDeleted — Arrange for callback when interpreter is deleted

### SYNOPSIS

#include <tcl8.6/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, Tcl_CreateThreadExitHandler

### KEYWORDS

callback, cleanup, delete, interpreter
Copyright © 1993 The Regents of the University of California. Copyright © 1994-1996 Sun Microsystems, Inc.