Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
fifo(n)								       fifo(n)


       fifo - Create and manipulate u-turn fifo	channels

       package require Tcl

       package require memchan



       fifo   creates a	stream-oriented	in-memory channel and returns its han-
	      dle. There is no restriction on the ultimate size	of  the	 chan-
	      nel,  it will always grow	as much	as is necessary	to accommodate
	      the data written into it.

	      In contrast to the channels generated by memchan a channel  cre-
	      ated  here  effectively  represents  an U-turn. All data written
	      into it can be read out, but only	in the same order.  This  also
	      means that a fifo	channel	is not seekable.

	      The  channels  created  here  can	 be transferred	between	inter-
	      preters in the same thread and between threads, but  only	 as  a
	      whole.  It is not	possible to use	them to	create a bi- or	unidi-
	      rectional	connection between two interpreters.

       Memory channels created by fifo provide two read-only options which can
       be queried via the standard fconfigure command. These are

	      The value	of this	option is the number of	bytes currently	stored
	      in the queried memory channel.

	      The value	of this	option is the number of	bytes currently	 allo-
	      cated  by	the queried memory channel. This number	is at least as
	      big as the value of -length.

       As the channels generated by fifo grow as  necessary  they  are	always
       writable.  This	means that a writable fileevent-handler	will fire con-

       The channels are	also readable if they contain more  than  zero	bytes.
       Under  this  conditions a readable fileevent-handler will fire continu-

       One possible application	of memory channels created by memchan or  fifo
       is as temporary storage device to collect data coming in	over a pipe or
       a socket. If part of the	processing of the incoming data	is to read and
       process	header	bytes or similar fifo are easier to use	as they	do not
       require seeking back and	forth to switch	between	 the  assimilation  of
       headers at the beginning	and writing new	data at	the end.

       fifo2, memchan, null

       channel,	fifo, i/o, in-memory channel, memchan, stream

       Copyright (c) 1996-2003 Andreas Kupries <>

Memory channels			      2.1			       fifo(n)


Want to link to this manual page? Use this URL:

home | help