Tcl_Exit(3)
Tcl_Exit(3)          Tcl Library Procedures           Tcl_Exit(3)
_________________________________________________________________
NAME
     Tcl_Exit,        Tcl_Finalize,        Tcl_CreateExitHandler,
     Tcl_DeleteExitHandler,  Tcl_ExitThread,  Tcl_FinalizeThread,
     Tcl_CreateThreadExitHandler,    Tcl_DeleteThreadExitHandler,
     Tcl_SetExitProc  - end the application or thread (and invoke
     exit handlers)
SYNOPSIS
     #include <tcl.h>
     Tcl_Exit(status)
     Tcl_Finalize()
     Tcl_CreateExitHandler(proc, clientData)
     Tcl_DeleteExitHandler(proc, clientData)
     Tcl_ExitThread(status)
     Tcl_FinalizeThread()
     Tcl_CreateThreadExitHandler(proc, clientData)
     Tcl_DeleteThreadExitHandler(proc, clientData)
     Tcl_ExitProc *                                                |
     Tcl_SetExitProc(proc)                                         |
ARGUMENTS
     int status (in)                       Provides   information
                                           about why the applica-
                                           tion or thread exited.
                                           Exact  meaning  may be
                                           platform-specific.   0
                                           usually means a normal
                                           exit,   any    nonzero
                                           value   usually  means
                                           that     an      error
                                           occurred.
     Tcl_ExitProc *proc (in)               Procedure  to   invoke
                                           before  exiting appli-
                                           cation,    or     (for
                                           Tcl_SetExitProc)  NULL
                                           to    uninstall    the
                                           current    application
                                           exit procedure.
     ClientData clientData (in)            Arbitrary     one-word
Tcl                     Last change: 8.5                        1
Tcl_Exit(3)          Tcl Library Procedures           Tcl_Exit(3)
                                           value to pass to proc.
_________________________________________________________________
DESCRIPTION
     The procedures described here provide a  graceful  mechanism
     to end the execution of a Tcl application. Exit handlers are
     invoked to cleanup the application's state before ending the
     execution of Tcl code.
     Invoke Tcl_Exit to end a Tcl application and  to  exit  from
     this process. This procedure is invoked by the exit command,
     and can be invoked anyplace else to terminate  the  applica-
     tion.   No-one  should ever invoke the exit system procedure
     directly;  always invoke Tcl_Exit instead, so  that  it  can
     invoke  exit handlers.  Note that if other code invokes exit
     system procedure directly, or otherwise causes the  applica-
     tion   to  terminate  without  calling  Tcl_Exit,  the  exit
     handlers will not be run.  Tcl_Exit internally  invokes  the
     exit  system  call,  thus  it  never  returns control to its
     caller.  If an application exit handler has  been  installed  |
     (see Tcl_SetExitProc), that handler is invoked with an argu-  |
     ment consisting of the exit status (cast to ClientData); the  |
     application exit handler should not return control to Tcl.
     Tcl_Finalize is similar to Tcl_Exit except that it does  not
     exit from the current process.  It is useful for cleaning up
     when a process is finished using Tcl but wishes to  continue
     executing,  and  when  Tcl  is  used in a dynamically loaded
     extension that is about to be unloaded.  On some systems Tcl
     is  automatically notified when it is being unloaded, and it
     calls Tcl_Finalize  internally;  on  these  systems  it  not
     necessary  for  the  caller to explicitly call Tcl_Finalize.
     However, to ensure  portability,  your  code  should  always
     invoke  Tcl_Finalize  when  Tcl is being unloaded, to ensure
     that the code will work on all platforms.  Tcl_Finalize  can
     be safely called more than once.
     Tcl_ExitThread is used to terminate the current  thread  and
     invoke  per-thread exit handlers.  This finalization is done
     by Tcl_FinalizeThread, which you can call if you  just  want
     to  clean  up  per-thread  state  and invoke the thread exit
     handlers.  Tcl_Finalize  calls  Tcl_FinalizeThread  for  the
     current thread automatically.
     Tcl_CreateExitHandler arranges for proc  to  be  invoked  by
     Tcl_Finalize   and   Tcl_Exit.   Tcl_CreateThreadExitHandler
     arranges for proc to be invoked  by  Tcl_FinalizeThread  and
     Tcl_ExitThread.  This provides a hook for cleanup operations
     such as flushing buffers and freeing  global  memory.   Proc
     should match the type Tcl_ExitProc:
          typedef void Tcl_ExitProc(ClientData clientData);
Tcl                     Last change: 8.5                        2
Tcl_Exit(3)          Tcl Library Procedures           Tcl_Exit(3)
     The clientData parameter to proc is a copy of the clientData
     argument      given      to     Tcl_CreateExitHandler     or
     Tcl_CreateThreadExitHandler when the callback  was  created.
     Typically,  clientData points to a data structure containing
     application-specific information about what to do in proc.
     Tcl_DeleteExitHandler and Tcl_DeleteThreadExitHandler may be
     called  to  delete  a  previously-created  exit handler.  It
     removes the handler indicated by proc and clientData so that
     no  call  to  proc  will be made.  If no such handler exists
     then  Tcl_DeleteExitHandler  or  Tcl_DeleteThreadExitHandler
     does nothing.
     Tcl_Finalize  and  Tcl_Exit  execute  all  registered   exit
     handlers, in reverse order from the order in which they were
     registered.  This matches the natural order in which  exten-
     sions  are  loaded and unloaded; if extension A loads exten-
     sion B, it usually unloads B before it itself  is  unloaded.
     If  extension  A  registers its exit handlers before loading
     extension B, this ensures that any exit handlers for B  will
     be executed before the exit handlers for A.
     Tcl_Finalize and Tcl_Exit call  Tcl_FinalizeThread  and  the
     thread  exit  handlers after the process-wide exit handlers.
     This is because thread finalization shuts down the I/O chan-
     nel  system,  so  any  attempt  at  I/O  by  the global exit
     handlers will vanish into the bitbucket.
     Tcl_SetExitProc  installs  an  application   exit   handler,  |
     returning  the previously-installed application exit handler  |
     or NULL if no application  handler  was  installed.   If  an  |
     application  exit  handler  is  installed, that exit handler  |
     takes over complete responsibility for finalization of Tcl's  |
     subsystems  via  Tcl_Finalize  at  an appropriate time.  The  |
     argument passed to proc when it is invoked will be the  exit  |
     status  code  (as  passed  to Tcl_Exit) cast to a ClientData  |
     value.
KEYWORDS
     callback, cleanup, dynamic loading, end  application,  exit,
     unloading, thread
Tcl                     Last change: 8.5                        3
Man(1) output converted with
man2html