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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1993 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: read.n,v 1.7.8.1 2004/10/27 14:23:57 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH read n 8.1 Tcl "Tcl Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. read - Read from a channel
  16. .SH SYNOPSIS
  17. fBread fR?fB-nonewlinefR? fIchannelIdfR
  18. .sp
  19. fBread fIchannelId numCharsfR
  20. .BE
  21. .SH DESCRIPTION
  22. .PP
  23. In the first form, the fBreadfR command reads all of the data from
  24. fIchannelIdfR up to the end of the file.  If the fB-nonewlinefR
  25. switch is specified then the last character of the file is discarded
  26. if it is a newline.  In the second form, the extra argument specifies
  27. how many characters to read.  Exactly that many characters will be
  28. read and returned, unless there are fewer than fInumCharsfR left in
  29. the file; in this case all the remaining characters are returned.  If
  30. the channel is configured to use a multi-byte encoding, then the
  31. number of characters read may not be the same as the number of bytes
  32. read.
  33. .PP
  34. .VS
  35. fIChannelIdfR must be an identifier for an open channel such as the
  36. Tcl standard input channel (fBstdinfR), the return value from an
  37. invocation of fBopenfR or fBsocketfR, or the result of a channel
  38. creation command provided by a Tcl extension. The channel must have
  39. been opened for input.
  40. .VE
  41. .PP
  42. If fIchannelIdfR is in nonblocking mode, the command may not read as
  43. many characters as requested: once all available input has been read,
  44. the command will return the data that is available rather than
  45. blocking for more input.  If the channel is configured to use a
  46. multi-byte encoding, then there may actually be some bytes remaining
  47. in the internal buffers that do not form a complete character.  These
  48. bytes will not be returned until a complete character is available or
  49. end-of-file is reached.  The fB-nonewlinefR switch is ignored if
  50. the command returns before reaching the end of the file.
  51. .PP
  52. fBReadfR translates end-of-line sequences in the input into
  53. newline characters according to the fB-translationfR option
  54. for the channel.
  55. See the fBfconfigurefR manual entry for a discussion on ways in
  56. which fBfconfigurefR will alter input.
  57. .SH "USE WITH SERIAL PORTS"
  58. '" Note:  this advice actually applies to many versions of Tcl
  59. For most applications a channel connected to a serial port should be
  60. configured to be nonblocking: fBfconfigure fIchannelId fB-blocking
  61. fI0fR.  Then fBreadfR behaves much like described above.  Care
  62. must be taken when using fBreadfR on blocking serial ports:
  63. .TP
  64. fBread fIchannelId numCharsfR 
  65. In this form fBreadfR blocks until fInumCharsfR have been received
  66. from the serial port.
  67. .TP
  68. fBread fIchannelIdfR 
  69. In this form fBreadfR blocks until the reception of the end-of-file
  70. character, see fBfconfigure -eofcharfR. If there no end-of-file
  71. character has been configured for the channel, then fBreadfR will
  72. block forever.
  73. .SH "EXAMPLE"
  74. This example code reads a file all at once, and splits it into a list,
  75. with each line in the file corresponding to an element in the list:
  76. .CS
  77. set fl [open /proc/meminfo]
  78. set data [fBreadfR $fl]
  79. close $fl
  80. set lines [split $data \n]
  81. .CE
  82. .SH "SEE ALSO"
  83. file(n), eof(n), fblocked(n), fconfigure(n), Tcl_StandardChannels(3)
  84. .SH KEYWORDS
  85. blocking, channel, end of line, end of file, nonblocking, read, translation, encoding