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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 2001 by ActiveState Corporation
  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: StdChannels.3,v 1.8 2002/11/15 15:34:17 dkf Exp $
  8. '" 
  9. .so man.macros
  10. .TH "Standard Channels" 3 7.5 Tcl "Tcl Library Procedures"
  11. .BS
  12. '" Note:  do not modify the .SH NAME line immediately below!
  13. .SH NAME
  14. Tcl_StandardChannels - How the Tcl library deals with the standard channels
  15. .BE
  16. .SH DESCRIPTION
  17. .PP
  18. This page explains the initialization and use of standard channels in
  19. the Tcl library.
  20. .PP
  21. The term fIstandard channelsfR comes out of the Unix world and
  22. refers to the three channels automatically opened by the OS for
  23. each new application. They are fBstdinfR, fBstdoutfR and
  24. fBstderrfR. The first is the standard input an application can read
  25. from, the other two refer to writable channels, one for regular
  26. output and the other for error messages.
  27. .PP
  28. Tcl generalizes this concept in a cross-platform way and
  29. exposes standard channels to the script level.
  30. .SH APIs
  31. .PP
  32. The public API procedures dealing directly with standard channels are
  33. fBTcl_GetStdChannelfR and fBTcl_SetStdChannelfR. Additional public
  34. APIs to consider are fBTcl_RegisterChannelfR,
  35. fBTcl_CreateChannelfR and fBTcl_GetChannelfR.
  36. .SH "INITIALIZATION OF TCL STANDARD CHANNELS"
  37. .PP
  38. Standard channels are initialized by the Tcl library in three cases:
  39. when explicitly requested, when implicitly required before returning
  40. channel information, or when implicitly required during registration
  41. of a new channel.
  42. .PP
  43. These cases differ in how they handle unavailable platform- specific
  44. standard channels.  (A channel is not ``available'' if it could not be
  45. successfully opened; for example, in a Tcl application run as a
  46. Windows NT service.)
  47. .TP
  48. 1)
  49. A single standard channel is initialized when it is explicitly
  50. specified in a call to fBTcl_SetStdChannelfR.  The state of the
  51. other standard channels are unaffected.
  52. .sp
  53. Missing platform-specific standard channels do not matter here. This
  54. approach is not available at the script level.
  55. .TP
  56. 2)
  57. All uninitialized standard channels are initialized to
  58. platform-specific default values:
  59. .RS
  60. .TP
  61. (a)
  62. when open channels are listed with fBTcl_GetChannelNamesfR (or the
  63. fBfile channelsfR script command), or
  64. .TP
  65. (b)
  66. when information about any standard channel is requested with a call
  67. to fBTcl_GetStdChannelfR, or with a call to fBTcl_GetChannelfR
  68. which specifies one of the standard names (fBstdinfR, fBstdoutfR
  69. and fBstderrfR).
  70. .RE
  71. .sp
  72. .RS
  73. In case of missing platform-specific standard channels, the Tcl
  74. standard channels are considered as initialized and then immediately
  75. closed. This means that the first three Tcl channels then opened by
  76. the application are designated as the Tcl standard channels.
  77. .RE
  78. .TP
  79. 3)
  80. All uninitialized standard channels are initialized to
  81. platform-specific default values when a user-requested channel is
  82. registered with fBTcl_RegisterChannelfR.
  83. .sp
  84. In case of unavailable platform-specific standard channels the channel
  85. whose creation caused the initialization of the Tcl standard channels
  86. is made a normal channel.  The next three Tcl channels opened by the
  87. application are designated as the Tcl standard channels.  In other
  88. words, of the first four Tcl channels opened by the application the
  89. second to fourth are designated as the Tcl standard channels.
  90. .PP
  91. .SH "RE-INITIALIZATION OF TCL STANDARD CHANNELS"
  92. .PP
  93. Once a Tcl standard channel is initialized through one of the methods
  94. above, closing this Tcl standard channel will cause the next call to
  95. fBTcl_CreateChannelfR to make the new channel the new standard
  96. channel, too. If more than one Tcl standard channel was closed
  97. fBTcl_CreateChannelfR will fill the empty slots in the order
  98. fBstdinfR, fBstdoutfR and fBstderrfR.
  99. .PP
  100. fBTcl_CreateChannelfR will not try to reinitialize an empty slot if
  101. that slot was not initialized before. It is this behavior which
  102. enables an application to employ method 1 of initialization, i.e. to
  103. create and designate their own Tcl standard channels.
  104. .SH tclsh
  105. .PP
  106. The Tcl shell (or rather fBTcl_MainfR) uses method 2 to initialize
  107. the standard channels.
  108. .SH wish
  109. .PP
  110. The windowing shell (or rather fBTk_MainExfR) uses method 1 to
  111. initialize the standard channels (See fBTk_InitConsoleChannelsfR)
  112. on non-Unix platforms.  On Unix platforms, fBTk_MainExfR implicitly
  113. uses method 2 to initialize the standard channels.
  114. .SH "SEE ALSO"
  115. Tcl_CreateChannel(3), Tcl_RegisterChannel(3), Tcl_GetChannel(3), Tcl_GetStdChannel(3), Tcl_SetStdChannel(3), Tk_InitConsoleChannels(3), tclsh(1), wish(1), Tcl_Main(3), Tk_MainEx(3)
  116. .SH KEYWORDS
  117. standard channels