日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
SPAWN |
現在のプロセスのサブプロセスを生成します。現在のプロセス・コンテキストの一部が,サブプロセスにコピーされます。サブプロセスを作成するためには, RESOURCE_WAIT 状態でなければなりません。また,TMPMBX(一時的メールボックス)または PRMMBX(パーマネント・メールボックス)特権が必要です。 SPAWN コマンドは,ターミナル属性を操作しません。ターミナルがメールボックスに関係付けられている場合は, SPAWN および ATTACH コマンドは使用できません。
SPAWN [コマンド文字列]
コマンド文字列
作成されたサブプロセスのコンテキストで実行する, 132 文字以内のコマンド文字列を指定します。コマンドが終了するとサブプロセスは終了し,制御は親プロセスに戻ります。 /INPUT 修飾子とコマンド文字列の両方を指定した場合は,指定したコマンド文字列が実行された後, /INPUT 修飾子の指定からコマンドが入力されます。コマンド文字列に一重引用符による置換が含まれている場合,その一重引用符による置換は,親のコマンド行インタプリタ (CLI) のコンテキストで実行されます。他のフェーズの置換は,サブプロセスの CLI のコンテキストで実行されます。
SPAWN コマンドは,現在のプロセスから次の属性をコピーして,現在のプロセスのサブプロセスを作成します。
- $RESTART,$SEVERITY,$STATUS を除くすべてのグローバル・シンボル
- 現在のコマンド・プロシージャ・レベルに定義されたすべてのローカル・シンボル
- キー定義
- 現在のキーパッド状態
- 現在のプロンプト文字列
- すべてのプロセス論理名および論理名テーブル。ただし,明示的に CONFINE のマークが付いたもの,あるいはエグゼクティブ・モードまたはカーネル・モードで作成されたものを除きます。
- 省略時のディスクとディレクトリ
- 現在の SET MESSAGE 設定
- 現在のプロセス特権
- 制御とチェックの状態
プロセスの現在のコマンド・テーブルなどの一部の属性は,コピーされないことに注意してください。
サブプロセスの作成時には,オープンされたプロセス・パーマネント・ファイル,およびイメージまたはプロシージャは,親プロセスからコピーされません。サブプロセスは,コマンド・レベル 0 (現在のプロンプトを持つ DCL レベル) に設定されます。
/PROCESS 修飾子を指定しない場合は,このサブプロセスの名前は,親プロセス名の一部と,一意の番号から構成されます。たとえば,親プロセス名が SKONETSKI の場合は,サブプロセス名は,SKONETSKI_123,SKONETSKI_4732 のようになります。
コンテキストが別にコピーされるので,親プロセスの LOGIN.COM ファイルはサブプロセスに対しては実行されません。そのため,サブプロセス初期化が速くなります。 /WAIT 修飾子が有効な場合は,サブプロセスが終了する,または ATTACH コマンド経由で制御が親プロセスに戻るまで,親プロセスはハイバネート状態になります。
次の場合は,複数のプロセスが同時に同じ入力ストリームまたは出力ストリームを使用しようとします。
- 複数のプロセスがそのストリームを共有し,現在接続されていないサブプロセスを終了する場合
- 現在接続されているプロセスから作成されたのではないプロセスを終了させる場合
サブプロセスを終了し親プロセスに戻るには, LOGOUT コマンドを使用する必要があります。ATTACH コマンドを使用すると,親プロセスを含めたサブプロセス階層構造の別のプロセスに,端末の制御を移すことができます。SHOW PROCESS/SUBPROCESSES コマンドは,サブプロセス階層構造内のプロセスを表示し,現在のプロセスをポイントします。
注意
サブプロセスの階層構造は SPAWN コマンドを使用して設定できるため,階層構造内のプロセスを終了させる場合は注意してください。プロセスを終了させると,階層構造内のそのポイントより下にあるすべてのサブプロセスが自動的に終了します。
SPAWN コマンドに使用する修飾子は,コマンド動詞の直後に指定しなければなりません。コマンド文字列パラメータは,最後の修飾子の後から始まり,コマンド行の最後まで続きます。
/CARRIAGE_CONTROL
/NOCARRIAGE_CONTROL
サブプロセスのプロンプト文字列の前で,改行するかどうかを指定します。省略時の設定では,SPAWN コマンドは親プロセスの現在の設定をコピーします。/CLI=CLI ファイル指定
/NOCLI
サブプロセスが使用する,代替のコマンド言語インタプリタ(CLI)の名前を指定します。省略時の CLI は,親プロセスの CLI と同じです (SYSUAF に定義されています)。 /CLI 修飾子を指定した場合には,親プロセスの属性がサブプロセスにコピーされます。指定する CLI は SYS$SYSTEM に存在しなければならず,ファイル・タイプは .EXE でなければなりません。
/INPUT=ファイル指定
作成されたサブプロセスで実行される, 1 つまたは複数の DCL コマンドを含んだ入力ファイルを指定します。省略時のファイル・タイプは COM です。ファイル指定に,アスタリスク (*) およびパーセント記号 (%) のワイルドカード文字は使用できません。入力ファイルの処理が終了すると,サブプロセスは終了します。コマンド文字列と /INPUT 修飾子の両方が指定された場合には,コマンド文字列が処理された後で, /INPUT 修飾子で得られるコマンドが処理されます。どちらも指定されない場合は,SYS$INPUT が使用されます ( この場合 SPAWN/NOWAIT コマンドは,親プロセスで実行中のイメージを終了させるために押した Ctrl/Y でも終了します )。/INPUT 修飾子に,レコード単位で処理されないプロセス・パーマネント・ファイル (NRO PPF) は指定できません。 /INPUT 修飾子の値として,このようなファイルを指定した場合には,エラー・メッセージが表示されます。
暗黙の入力としてNRO PPF が使用される場合 ( つまり,/INPUT 修飾子が指定されておらず,SYS$INPUT が NRO PPF の場合 ) には, SPAWN コマンドは正常終了となります。次の表を参照してください。
プロセス・タイプ SYS$INPUT 暗黙の入力 会話型モード NRO PPF SYS$COMMAND 非会話モード NRO PPF 空装置 任意 任意 SYS$INPUT
SYS$INPUT がターミナルの場合には,対応するターミナル・メールボックスを持つことはできません。
/KERNEL_THREAD_LIMIT=n
SYSGEN パラメータ MULTITHREAD よりも高い値を指定した場合,エラー・メッセージが返されます。値として 0 を指定すると,プロセスは MULTITHREAD で設定されたシステム制限値を使用します。/KEYPAD (省略時の設定)
/NOKEYPAD
キーパッド・キー定義と現在のキーパッド状態を,親プロセスからサブプロセスにコピーするかどうかを指定します。省略時の設定では,DEFINE/KEY コマンド,または SET KEY コマンドによってキー定義や状態が設定されていると,これらの設定はサブプロセスにコピーされます。キー設定をコピーしないようにするには,/NOKEYPAD 修飾子を使用します。/LOG (省略時の設定)
/NOLOG
プロセス間での制御の受け渡しを示すメッセージとともに,割り当てられたサブプロセス名を表示するかどうか指定します。/LOGICAL_NAMES (省略時の設定)
/NOLOGICAL_NAMES
システムが,プロセス論理名と論理名テーブルをサブプロセスにコピーするかどうかを指定します。省略時の設定では,すべてのプロセス論理名とプロセス論理名テーブルが,サブプロセスにコピーされます。この場合,CONFINE 属性が指定されているものと,エグゼクティブ・モードまたはカーネル・モードで作成されたものを除きます。/NOTIFY
/NONOTIFY (省略時の設定)
サブプロセスが,正常終了または異常終了したことを示すメッセージを,ユーザがログインしているターミナルに表示するかどうか指定します。この修飾子は,/NOWAIT 修飾子を指定している場合のみ有効です。また,SPAWN コマンドが非会話型モードのプロセス内で実行される場合には, /NOTIFY 修飾子を指定できません。/NOTIFY 修飾子を指定したことで表示されるメッセージは, DCL メッセージであると解釈されます。したがって,SET BROADCAST=NODCL が有効な場合には,このような通知メッセージはすべて出力されません。
/OUTPUT=ファイル指定
SPAWN 操作からの出力を,指定されたファイルに書き込みます。ファイル指定にアスタリスク (*) およびパーセント記号 (%) のワイルドカード文字は使用できません。 (/NOWAIT 修飾子を使用している場合には, /OUTPUT 修飾子に対して SYS$COMMAND を指定してはなりません。親プロセスとサブプロセスの両方の出力が,同時にターミナル上に表示されます。)
注意
/OUTPUT 修飾子のファイル指定引数に,既存のファイルのバージョン番号を指定すると,既存のファイルは新しい出力に置き換えられます。
/OUTPUT 修飾子に,レコード単位で処理されないプロセス・パーマネント・ファイル (NRO PPF) は指定できません。 /OUTPUT 修飾子の値としてこのようなファイルを指定した場合には,エラー・メッセージが表示されます。
暗黙の出力として NRO PPF が使用された場合には, SPAWN コマンドは正常終了します。次の表を参照してください。
プロセス・タイプ SYS$OUTPUT 暗黙の出力 任意のタイプ NRO PPF 親プロセスに対して,メールボックスが送信するレコーは,現在の SYS$OUTPUT 装置に書き込まれる。 任意のタイプ 他の任意のファイル SYS$OUTPUT
/OUTPUT 修飾子を省略した場合には,出力は現在の SYS$OUTPUT 装置に送られます。
/PRIVILEGES={CURRENT|AUTHORIZED}
親プロセスの現在の特権,または認められている特権を,認められている特権として継承するかどうかを指定します。省略時の設定は /PRIVILEGES=CURRENT です。/PRIVILEGES=AUTHORIZED を指定すると,親プロセスで認められているすべての特権が継承されます。/PROCESS=サブプロセス名
作成されるサブプロセスの名前を指定します。/PROCESS 修飾子を省略した場合には,親プロセスの名前と一意な番号から構成される,一意なプロセス名が与えられます。省略時のサブプロセス名の形式は,ユーザ名_n です。既存のプロセス名を指定した場合には,エラー・メッセージが表示されます。 /LOG 修飾子を指定している場合には,サブプロセスに割り当てられた名前が表示されます。
注意
OpenVMS Version 7.3-1 より前のバージョンでは,プロセス名が指定されなかった場合,システムはユーザ名に _n を付加することによって名前を生成しました。 n は,システム内の現在のプロセスとして次に使用可能な重複しない整数でした。たとえば,ユーザ SYSTEM から最初にスポーンされたプロセスは SYSTEM_1 になり, 2 番目は SYSTEM_2 になります。抜けた番号は,次に使用可能な番号としてすぐに使用されていました。OpenVMS Alpha Version 7.3-1 からは,ランダムな番号が選択されユーザ名に付加されます。また,OpenVMS Version 8.3 からは,省略時の設定で,選択される番号の最大値が,以前の 255 ではなく,65535 になりました。したがって,ユーザ SYSTEM からスポーンされた最初の数プロセスは, SYSTEM_7376,SYSTEM_9,SYSTEM_47124 のようになります。
一部のアプリケーションは,以前のサブプロセス名の割り当て方法に依存しているかもしれません。 DCL_CTLFLAGS システム・パラメータを使用して,必要に応じてシステムを構成することができます。
シーケンシャルな番号生成からランダムな番号生成へ変更したのは,次に利用可能な未使用の番号スロットをシーケンシャルに調べる方法は,パフォーマンスの観点から非常にコストがかかるからです。プロセスを作成するメカニズムでは,一意の名前が見つかるまで増分を行います。すでにいくつかのサブプロセスが存在する場合,同じ OpenVMS グループ内にサブプロセスを作るコストは,グループ全体でプロセス名が一意でなければならないため,増加します。
ランダムな番号生成を使用すると,同じ番号がすでに使用されている可能性は少ないため,一度で一意の名前を見つけることができる可能性が高くなります。これにより,プロセス生成のコストが大幅に削減され,サブプロセスをスポーンするアプリケーションでは,この変更により,大幅な性能改善が期待できます。
詳細は,『OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』を参照してください。
/PROMPT[=文字列]
DCL がサブプロセスで使用するプロンプト文字列を指定します。省略時の設定では,親プロセスの現在のプロンプト文字列です。文字列には,複数の文字を指定できます。文字列の中では,すべての ASCII 文字を使用できます。文字列にスペースや特殊文字,小文字が含まれる場合は,文字列を引用符 (" ") で囲まなければなりません。文字列を引用符で囲まなかった場合には,文字は自動的に大文字に変換され,先行するスペースと後続のスペースは削除されます。
/PROMPT 修飾子に文字列を指定しないと, DCL の省略時のプロンプト文字列であるドル記号 ($) が使用されます。
/SYMBOLS (省略時の設定)
/NOSYMBOLS
システムが,DCL のグローバル・シンボルとローカル・シンボルをサブプロセスに渡すかどうかを指定します。ただし,$RESTART,$SEVERITY,および $STATUS というシンボルは,サブプロセスに渡されることはありません。/TABLE=コマンド・テーブル
サブプロセスが使用する,代替コマンド・テーブルの名前を指定します。/TRUSTED
/NOTRUSTED
SPAWN コマンドの入力が,トラステッド・コマンド・プロシージャから行われることを指定します。キャプティブ・アカウントからは SPAWN コマンドは使用できません。 /TRUSTED 修飾子は,トラステッド・コマンド・プロシージャであるキャプティブ・コマンド・プロシージャから, SPAWN 操作を実行する方法を提供します。詳細は,『OpenVMS システム・セキュリティ・ガイド』を参照してください。/WAIT (省略時の設定)
/NOWAIT
親プロセスへのコマンド入力を, SPAWN で作成されたサブプロセスの終了まで待つかどうかを制御します。 /NOWAIT 修飾子を指定した場合には,指定されたサブプロセスが実行されている間も,新しいコマンドを入力できます。親プロセスとサブプロセスからの出力が,同時にターミナルに表示されることがないように, /OUTPUT 修飾子と /NOWAIT 修飾子を使用します。/NOWAIT 修飾子を指定した場合は,サブプロセスの入力も出力も親プロセスと共用されます。入力装置がターミナルの場合には,Ctrl/T や Ctrl/Y などの制御文字は,入力装置を共用するすべてのサブプロセスに影響を与えます。たとえば,Ctrl/Y は,このようなすべてのサブプロセスに割り込みをかけます。
この問題を回避するためには,/INPUT=NL: を指定します。
#1 |
---|
$ RUN MYPROG . . . $ [Ctrl/Y] $ SPAWN MAIL %DCL-S-SPAWNED, process SKONETSKI_272 spawned %DCL-S-ATTACHED, terminal now attached to process SKONETSKI_272 MAIL> READ . . . MAIL> EXIT %DCL-S-RETURNED, control returned to process SKONETSKI $ CONTINUE |
この例の SPAWN コマンドは,現在実行中のプログラムを終了させることなく, OpenVMS の Mail ユーティリティ( MAIL )を起動させています。 MAIL の終了後,制御は親プロセスに戻ります。
目次 | 索引 |
|