fblocked - able input
fblocked channelId
fblocked(1t) Tcl Built-In Commands fblocked(1t)
NAME
fblocked - Test whether the last input operation exhausted all avail-
able 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 stan-
dard channel (stdin, stdout, or stderr), the return value from an invo-
cation 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
without 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 con-
nect {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
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
+---------------+------------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+------------------+
|Availability | runtime/tcl-8 |
+---------------+------------------+
|Stability | Uncommitted |
+---------------+------------------+
SEE ALSO
gets(n), open(n), read(n), socket(n), Tcl_StandardChannels(3)
KEYWORDS
blocking, nonblocking
NOTES
Source code for open source software components in Oracle Solaris can
be found at https://www.oracle.com/downloads/opensource/solaris-source-
code-downloads.html.
This software was built from source available at
https://github.com/oracle/solaris-userland. The original community
source was downloaded from http://prdownloads.sourceforge.net/tcl/tcl-
core8.6.7-src.tar.gz.
Further information about this software can be found on the open source
community website at https://www.tcl.tk/.
Tcl 7.5 fblocked(1t)