shpawn

Command: shpawn


Description
"shpawn" does the same as "spawn" does (see there).

However the command is not executed directly but is passed
to a shell which then will process the command.
This way it is possible to use the full functionality of a
shell e.g. wildcard extension alias piping ...

By default /bin/sh is used as the shell binary and a login
shell is requested by giving the -l flag. These values can be
changed in the options dictionary see sections "Options" below.

In addition the piping facility of the shell can be used to
monitor the standard input and standard output of the
invoked command. Monitoring can conveniently be turned on
for stdin and stdout independently via the options
dictionary.
See sections "Options" and "Remarks" below.

Parameters
-see "spawn"-

Author
R Kupper

Bugs
-see "spawn"-

Synopsis
CommandString shpawn } { Flag=0: Status NormalExitFlag
CommandArray shpawn } {
} { Flag=1 or omitted:
CommandString Flag shpawn } -> { ear(write) mouth(read)
CommandArray Flag shpawn } {
{ Flag=2: ChildPID ear(write) mouth(read)

Examples
%try these examples with "spawn" as well to see the difference:
1. (echo $PATH) 0 shpawn
2. (rm synod2/lib/help/cc/*.hlp) 0 shpawn
3. (ls | sort) 0 shpawn

File
lib/sli/processes.sli
Diagnostics
-see "spawn"-

Remarks
"shpawn" invokes "/sh-binary" from the options dictionary
(/bin/sh by default) and passes the given command after
a "-c" flag. This means the specified shell binary must
support this -c flag.

The monitoring option for stdin and stdout exploits the
piping deature of the shell by piping information through
instances of the "tee" command which writes it to a file.
(tee infile | command | tee outfile).
These files are then monitored in separate subprocesses using
"tail" in a terminal window. The terminal command to be used is
defined in the Options of shpawn.
See manpages of sh tee tail xterm/konsole for references.
The monitoring option creates two files named
/tmp/SLI-shpawn-monitor-stdin and /tmp/SLI-shpawn-monitor-stdout
which will persist after command execution terminated so
that their contents may be analyzed.

FirstVersion
May 19 1999

Options

Options-name: /shpawn

Option type default description
---------------- ---------- -------- ------------------------------
/terminal string $TERM Terminal command to be used for
monitoring stdin and stdout.

/monitor-stdin booltype false True if the standard input of
the invoked command shall be
monitored in a terminal window.

/monitor-stout booltype false True if the standard output of
the invoked command shall be
monitored in a terminal window.

/sh-binary string (/bin/sh) Path to the shell binary to use.
This binary must accept the flag -c
for execution of a command.

/sh-flags stringarray [] Flags added wehn calling the shell
binary. Flags must be given as separate
string elements (e.g. [(-l)].
The array may be empty.
The flag -c is automatically added
to this list of flags by the routine.