Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

eof(3tcl) [debian man page]

eof(3tcl)						       Tcl Built-In Commands							 eof(3tcl)

__________________________________________________________________________________________________________________________________________________

NAME
eof - Check for end of file condition on channel SYNOPSIS
eof channelId _________________________________________________________________ DESCRIPTION
Returns 1 if an end of file condition occurred during the most recent input operation on channelId (such as gets), 0 otherwise. ChannelId must be an identifier for an open channel such as a Tcl standard channel (stdin, stdout, or stderr), the return value from an invocation of open or socket, or the result of a channel creation command provided by a Tcl extension. EXAMPLES
Read and print out the contents of a file line-by-line: set f [open somefile.txt] while {1} { set line [gets $f] if {[eof $f]} { close $f break } puts "Read line: $line" } Read and print out the contents of a file by fixed-size records: set f [open somefile.dat] fconfigure $f -translation binary set recordSize 40 while {1} { set record [read $f $recordSize] if {[eof $f]} { close $f break } puts "Read record: $record" } SEE ALSO
file(3tcl), open(3tcl), close(3tcl), fblocked(3tcl), Tcl_StandardChannels(3tcl) KEYWORDS
channel, end of file Tcl 7.5 eof(3tcl)

Check Out this Related Man Page

fblocked(3tcl)						       Tcl Built-In Commands						    fblocked(3tcl)

__________________________________________________________________________________________________________________________________________________

NAME
fblocked - Test whether the last input operation exhausted all available input SYNOPSIS
fblocked channelId _________________________________________________________________ DESCRIPTION
The fblocked command returns 1 if the most recent input operation on channelId returned less information than requested because all avail- able input was exhausted. For example, if gets is invoked when there are only three characters available for input and no end-of-line sequence, gets returns an empty string and a subsequent call to fblocked will return 1. ChannelId must be an identifier for an open channel such as a Tcl standard channel (stdin, stdout, or stderr), the return value from an invocation of open or socket, or the result of a channel creation command provided by a Tcl extension. EXAMPLE
The fblocked command is particularly useful when writing network servers, as it allows you to write your code in a line-by-line style with- out preventing the servicing of other connections. This can be seen in this simple echo-service: # This is called whenever a new client connects to the server proc connect {chan host port} { set clientName [format <%s:%d> $host $port] puts "connection from $clientName" fconfigure $chan -blocking 0 -buffering line fileevent $chan readable [list echoLine $chan $clientName] } # This is called whenever either at least one byte of input # data is available, or the channel was closed by the client. proc echoLine {chan clientName} { gets $chan line if {[eof $chan]} { puts "finishing connection from $clientName" close $chan } elseif {![fblocked $chan]} { # Didn't block waiting for end-of-line puts "$clientName - $line" puts $chan $line } } # Create the server socket and enter the event-loop to wait # for incoming connections... socket -server connect 12345 vwait forever SEE ALSO
gets(3tcl), open(3tcl), read(3tcl), socket(3tcl), Tcl_StandardChannels(3tcl) KEYWORDS
blocking, nonblocking Tcl 7.5 fblocked(3tcl)
Man Page