The start string is always executed on the host on which ttsession is running; however, the executed process can start another process on another host.
To do this, first make your start string be similar to the following:
# rsh farhost myprog |
Next, to make sure myprog is placed in the right session and receives its initial message, you need to propagate the important ToolTalk environment variables. The ttrsh shell script shown in Example 4–1 propagates these environment variables.
#! /bin/sh
# Runs a command remotely in background, by pointing stdout and stderr
# at /dev/null. By running this through the Bourne shell at the other end,
# we get rid of the rsh and rshd.
#set -x
user=
debug=
HOST=${HOST-`hostname`}
if [ "$1" = "-debug" ]; then
debug=1
shift
fi
if [ $# -lt 2 -o "$1" = "-h" -o "$1" = "-help" ];
then
echo "Usage: ttrsh [-debug] remotehost [-l username] \
remotecommand"
echo "Usage: ttrsh [-h | -help]"
exit 1
else
host=$1
shift
if test "$1" = "-l" ; then
shift
user=$1
shift
fi
fi
xhostname=`expr "$DISPLAY" : "\([^:]*\).*"`
xscreen=`expr "$DISPLAY" : "[^:]*\(.*\)"`
if test x$xscreen = x; then
xscreen=":0.0"
fi
if test x$xhostname = x -o x$xhostname = x"unix";
then
DISPLAY=$HOST$xscreen
fi
if [ "$user" = "" ]; then
userOption=""
else
userOption="-l $user"
fi
if [ $debug ]; then
outputRedirect=
else
outputRedirect='> /dev/null 2>&1 &'
fi
(
echo "OPENWINHOME=$OPENWINHOME;export OPENWINHOME;\
TT_SESSION=$TT_SESSION;export TT_SESSION;\
TT_TOKEN=$TT_TOKEN;export TT_TOKEN;TT_FILE=$TT_FILE;\
export TT_FILE;DISPLAY=$DISPLAY;export DISPLAY;($*)" \
$outputRedirect | rsh $host $userOption /bin/sh &
) &