ここでは、ToolTalk と関連環境変数について説明します。
いくつかの ToolTalk 環境変数を設定できます。これらの変数について、表 4–2 に説明します。
表 4–2 環境変数
変数 |
説明 |
---|---|
ツールが ttsession を自動的に開始するときに、指定された標準オプションを無効にする。この変数を設定すると、すべての ToolTalk クライアントはこのコマンドを使用して、X セッションを自動的に開始させる |
|
|
|
|
|
トレースモードを使用する際に、表示する引数およびコンテキストの値の文字数を定義する。デフォルトでは最初の 40 字を表示する |
|
定義済みのファイルに範囲指定したメッセージがツールを呼び出す際に、ttsession がこの変数にパス名を設定する |
|
マップファイルを指す。定義したマップファイルは、ホストマシンのリダイレクトのために ToolTalk クライアントが読み取る |
|
マップファイルを指す。定義したマップファイルは、ファイルパーティションのリダイレクトのために ToolTalk クライアントが読み取る |
|
ttsession は、それが起動するツールにセッション識別子を通知する。この変数を設定すると、ToolTalk クライアントライブラリは、その値をデフォルトのセッション識別子として使用する。この変数に記憶された文字列は、tt_default_session_set へ渡すことができる |
|
ToolTalk クライアントライブラリに、ttsession によって起動したことを通知する。これによってクライアントは、起動が正常であったことを ttsession に確認できる |
|
|
tttrace(1) についてトレーススクリプトで指定したように、libtt がクライアントサイドのトレースを行うようにする |
tt_type_comp(1) と rpc.ttdbserverd(1M) で使用する ToolTalk 型データベースがどこに常駐するかを ToolTalk に通知する |
|
ToolTalk 型データベースの常駐場所を分類機構に通知する |
|
注 – Solaris 2.6 オペレーティング環境およびその互換バージョンのオペレーティングシステムでは、アカウントによってはこの変数が渡されない場合がある。つまり、コンソールにユーザー A またはユーザー B のスイッチユーザーとしてログオンしている場合は、通常 ttsession を自動起動する ToolTalk プログラムを実行しようとしても ttsession が自動起動しないことがある。この問題を回避するためには、この変数を手入力で設定するか、.login ファイルに含める必要がある。 |
|
|
この変数を設定すると、構築されているパス名の /net の代わりに、この環境変数の値を使用して、rpc.ttdbserverd(1M) による tt_host_netfile_file(3) 照会への応答を行う |
ToolTalk サービスが自動的に起動すると環境が変わります。この環境の中には、$TT_SESSION
と $TT_TOKEN
という環境変数や、キーワードがドル記号 ($) で始まる開始メッセージのコンテキストがすべて入っています。また、ファイルを配信範囲とするメッセージの場合には、$TT_FILE
という環境変数もこの環境に入ることができます。
子プロセスが tt_open を起動する場合、その親プロセスはこの環境の変化を子プロセスに伝播しなければなりません。
ToolTalk の開発環境を操作するのに TMPDIR
という環境変数も使用できます。たとえば、次のように入力すると、ディレクトリ /var/tmp にファイルがリダイレクトされます。
TMPDIR=/var/tmp |
開始文字列によってプロセスが起動されるのは ttsession が動作しているホスト上だけですが、起動されたプロセスは他のホスト上の他のプロセスを起動できます。
そのためには、まず開始文字列を次のようにします。
# rsh farhost myprog |
次に、myprog を確実に正しいセッションに入れて初期メッセージを受信させるために、ToolTalk の重要な環境変数をいくつか伝播する必要があります。これには、例 4–1 に示すように、シェルスクリプトの ttrsh を使用します。
#! /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 & ) & |
メッセージコンテキストは、ToolTalk サービスがアプリケーションを起動する際に特別な意味を持ちます。コンテキストスロット名がドル記号 ($) で始まる場合、ToolTalk サービスはこの値を環境変数として解釈します。たとえば、次のようにコンテキストスロット $CON1 の値が使用された場合です。
start "my_application $CON1" |