togeomview - send commands or OOGL objects to geomview
sends a stream of geomview commands, or OOGL-format geometric
data, to a cooperating copy of geomview. If geomview is not running, it is
automatically started. ('geomview' must be on the $PATH of the user running
'togeomview' in order for this to work.)
Typical usage is:
someprogram | togeomview (to send commands) or
someprogram-generating-OOGL-data | togeomview -g (to send geometry)
i.e. a program pipes geometric data into `` togeomview
''; the data is
displayed by a copy of geomview run with the -M
option and a name
matching the one given to togeomview
uses a named pipe in the directory /tmp/geomview
communicate with geomview. If unspecified, the pipe's default name is
"OOGL". When sending geometry ( -g
), a geomview object with
the same name as the pipe appears in geomview's object browser.
By default, when no suitable copy of geomview is running, togeomview
invokes "geomview" with arguments specifying the appropriate named
pipe. A different command may be specified as in:
togeomview OOGL gv -wpos 300x300 -c my_startup_script
which communicates through a pipe named OOGL, and (if necessary) invokes the
given gv command. The pipe name is required
if a command is specified.
After togeomview has created it, the named pipe may be written as an ordinary
file. For example, one could use
to invoke a listening copy of geomview, and then run a program which simply
wrote to /tmp/geomview/ pipename
The pipe-based communications scheme imposes several restrictions.
If no copy of geomview
is reading from the pipe, or if geomview gets far
enough behind, a program writing data to `` togeomview
'' will be forced
to block after sending a few kilobytes.
Because of the buffering in the pipe, the sender may be substantially ahead of
the geomview display.
If geomview exits, the sending program receives a write-on-broken-pipe (
) signal, which will kill it unless measures are taken to catch
or ignore that signal.
Only one copy of geomview can read from a given pipe at a time. If a second copy
attempts to read from it, both will probably fail. It's fine to have multiple
copies of geomview reading from different pipes.
Note that togeomview
will invoke geomview if no extant copy is listening
to the relevant pipe; it can't connect to an existing copy of geomview started
by other means.