Exit.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:5k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1995-1996 Sun Microsystems, Inc.
  3. '"
  4. '" See the file "license.terms" for information on usage and redistribution
  5. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  6. '" 
  7. '" RCS: @(#) $Id: Exit.3,v 1.4 2000/07/24 00:03:02 jenglish Exp $
  8. '" 
  9. .so man.macros
  10. .TH Tcl_Exit 3 8.1 Tcl "Tcl Library Procedures"
  11. .BS
  12. .SH NAME
  13. Tcl_Exit, Tcl_Finalize, Tcl_CreateExitHandler, Tcl_DeleteExitHandler, Tcl_ExitThread, Tcl_FinalizeThread, Tcl_CreateThreadExitHandler, Tcl_DeleteThreadExitHandler - end the application or thread (and invoke exit handlers)
  14. .SH SYNOPSIS
  15. .nf
  16. fB#include <tcl.h>fR
  17. .sp
  18. fBTcl_ExitfR(fIstatusfR)
  19. .sp
  20. fBTcl_FinalizefR()
  21. .sp
  22. fBTcl_CreateExitHandlerfR(fIproc, clientDatafR)
  23. .sp
  24. fBTcl_DeleteExitHandlerfR(fIproc, clientDatafR)
  25. .sp
  26. fBTcl_ExitThreadfR(fIstatusfR)
  27. .sp
  28. fBTcl_FinalizeThreadfR()
  29. .sp
  30. fBTcl_CreateThreadExitHandlerfR(fIproc, clientDatafR)
  31. .sp
  32. fBTcl_DeleteThreadExitHandlerfR(fIproc, clientDatafR)
  33. .SH ARGUMENTS
  34. .AS Tcl_ExitProc clientData
  35. .AP int status  in
  36. Provides information about why the application or thread exited.
  37. Exact meaning may
  38. be platform-specific.  0 usually means a normal exit, any nonzero value
  39. usually means that an error occurred.
  40. .AP Tcl_ExitProc *proc in
  41. Procedure to invoke before exiting application.
  42. .AP ClientData clientData in
  43. Arbitrary one-word value to pass to fIprocfR.
  44. .BE
  45. .SH DESCRIPTION
  46. .PP
  47. The procedures described here provide a graceful mechanism to end the
  48. execution of a fBTclfR application. Exit handlers are invoked to cleanup the
  49. application's state before ending the execution of fBTclfR code.
  50. .PP
  51. Invoke fBTcl_ExitfR to end a fBTclfR application and to exit from this
  52. process. This procedure is invoked by the fBexitfR command, and can be
  53. invoked anyplace else to terminate the application.
  54. No-one should ever invoke the fBexitfR system procedure directly;  always
  55. invoke fBTcl_ExitfR instead, so that it can invoke exit handlers.
  56. Note that if other code invokes fBexitfR system procedure directly, or
  57. otherwise causes the application to terminate without calling
  58. fBTcl_ExitfR, the exit handlers will not be run.
  59. fBTcl_ExitfR internally invokes the fBexitfR system call, thus it never
  60. returns control to its caller.
  61. .PP
  62. fBTcl_FinalizefR is similar to fBTcl_ExitfR except that it does not
  63. exit from the current process.
  64. It is useful for cleaning up when a process is finished using fBTclfR but
  65. wishes to continue executing, and when fBTclfR is used in a dynamically
  66. loaded extension that is about to be unloaded.
  67. On some systems fBTclfR is automatically notified when it is being
  68. unloaded, and it calls fBTcl_FinalizefR internally; on these systems it
  69. not necessary for the caller to explicitly call fBTcl_FinalizefR.
  70. However, to ensure portability, your code should always invoke
  71. fBTcl_FinalizefR when fBTclfR is being unloaded, to ensure that the
  72. code will work on all platforms. fBTcl_FinalizefR can be safely called
  73. more than once.
  74. .PP
  75. .VS
  76. fBTcl_ExitThreadfR is used to terminate the current thread and invoke
  77. per-thread exit handlers.  This finalization is done by
  78. fBTcl_FinalizeThreadfR, which you can call if you just want to clean
  79. up per-thread state and invoke the thread exit handlers.
  80. fBTcl_FinalizefR calls fBTcl_FinalizeThreadfR for the current
  81. thread automatically.
  82. .VE
  83. .PP
  84. fBTcl_CreateExitHandlerfR arranges for fIprocfR to be invoked
  85. by fBTcl_FinalizefR and fBTcl_ExitfR.
  86. fBTcl_CreateThreadExitHandlerfR arranges for fIprocfR to be invoked
  87. by fBTcl_FinalizeThreadfR and fBTcl_ExitThreadfR.
  88. This provides a hook for cleanup operations such as flushing buffers
  89. and freeing global memory.
  90. fIProcfR should match the type fBTcl_ExitProcfR:
  91. .CS
  92. typedef void Tcl_ExitProc(ClientData fIclientDatafR);
  93. .CE
  94. The fIclientDatafR parameter to fIprocfR is a
  95. copy of the fIclientDatafR argument given to
  96. fBTcl_CreateExitHandlerfR or fBTcl_CreateThreadExitHandlerfR when
  97. the callback
  98. was created.  Typically, fIclientDatafR points to a data
  99. structure containing application-specific information about
  100. what to do in fIprocfR.
  101. .PP
  102. fBTcl_DeleteExitHandlerfR and fBTcl_DeleteThreadExitHandlerfR may be
  103. called to delete a
  104. previously-created exit handler.  It removes the handler
  105. indicated by fIprocfR and fIclientDatafR so that no call
  106. to fIprocfR will be made.  If no such handler exists then
  107. fBTcl_DeleteExitHandlerfR or fBTcl_DeleteThreadExitHandlerfR does nothing.
  108. .PP
  109. .VS
  110. .PP
  111. fBTcl_FinalizefR and fBTcl_ExitfR execute all registered exit handlers,
  112. in reverse order from the order in which they were registered.
  113. This matches the natural order in which extensions are loaded and unloaded;
  114. if extension fBAfR loads extension fBBfR, it usually
  115. unloads fBBfR before it itself is unloaded.
  116. If extension fBAfR registers its exit handlers before loading extension
  117. fBBfR, this ensures that any exit handlers for fBBfR will be executed
  118. before the exit handlers for fBAfR.
  119. .VE
  120. .VS
  121. .PP
  122. fBTcl_FinalizefR and fBTcl_ExitfR call fBTcl_FinalizeThreadfR 
  123. and the thread exit handlers fIafterfR
  124. the process-wide exit handlers.  This is because thread finalization shuts
  125. down the I/O channel system, so any attempt at I/O by the global exit
  126. handlers will vanish into the bitbucket.
  127. .VE
  128. .SH KEYWORDS
  129. callback, cleanup, dynamic loading, end application, exit, unloading, thread