Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$ZF(-2)

オペレーティング・システム・コマンドまたはプログラムを子プロセスとして非同期的に実行します。 (非推奨)

Synopsis

$ZF(-2,program)

パラメータ

program オプション — 子プロセスとして実行されるオペレーティング・システム・コマンドまたはプログラム。引用符付きの文字列として指定されます。program を省略した場合、$ZF(-2) はオペレーティング・システム・シェルを起動します。

概要

Note:

$ZF(-2) は非推奨の関数です。ここでは、既存のコードとの互換性についてのみ説明します。新しいコード開発ではすべて、$ZF(-100) を使用してください。

$ZF(-2) は、Caché プロセスによるホスト・オペレーティング・システムのプログラムやコマンドの呼び出しを許可します。$ZF(-2) は、program で指定されたオペレーティング・システム・コマンドを、現在のコンソールから生成された子プロセスとして実行します。この関数は非同期的に実行されます。子プロセスを生成したら直ちに返し、プロセスの終了を待機しません。入力と出力のデバイスは、NULL デバイスが既定になります。

$ZF(-2) は子プロセスの終了状態を返しません。その代わりに、子プロセスが正常に作成された場合、$ZF(-2) は 0 を返します。子プロセスがフォークできない場合は $ZF(-2) は -1 を返します。

$ZF(-2) は、生成された子プロセスからの応答を待機しないので、子プロセスの実行中でも Caché を正常にシャットダウンすることができます。

$ZF(-2) は、オペレーティング・システム・コマンドを実行する前に親プロセスの主デバイス ($PRINCIPAL で指定) を終了します。これは、子プロセスが親プロセスと同時に実行されるためです。$ZF(-2)$PRINCIPAL を終了しなかった場合は、親と子からの出力が混ざり合います。$ZF(-2) の使用時に、子プロセスからの出力を回復させる場合は、コマンドで入出力をリダイレクトします。以下はその例です。

   SET x=$ZF(-2,"ls -l > mydir.txt")

特殊パラメータが指定されていない $ZF(-2) は、既定のオペレーティング・システム・シェルを起動します。詳細は、"コールアウト・ゲートウェイの使用法" の “オペレーティング・システム・コマンドの発行” を参照してください。

program で指定されたパス名にスペース文字が含まれる場合、パス名の処理はプラットフォームによって異なります。Windows および UNIX® の場合はパス名にスペース文字を使用することができますが、スペースを含むパス名は、追加の二重引用符 (“) で全体を囲む必要があります。これは、Windows の cmd /c 文に従っています。詳細は、Windows のコマンド・プロンプトで cmd /? を指定してください。

%Library.FileOpens in a new tab クラスの NormalizeFilenameWithSpaces()Opens in a new tab メソッドを使用すると、パス名内のスペースがホスト・プラットフォームに合わせて処理されるようにできます。

$ZF(-2) は、%System_Callout:U 特権を必要とする操作です。詳細は、"コールアウト・ゲートウェイの使用法" の “%System_Callout:USE 特権の追加” を参照してください。

監査

$ZF(-2) 呼び出しごとに、OS コマンド監査レコードが監査ログに追加されます。このレコードには、次のような情報が含まれます。

Execute O/S command Directory: c:\182u5\mgr\ 
Command: ls -lt 4002 - Detached

アタッチ解除されたキーワードは、呼び出しが $ZF(-2) であることを示します。$ZF(-1) 呼び出しではこのキーワードは使用されません。

$ZF(-2)、$ZF(-1)、および $ZF(-100)

これら 3 つの関数はほとんどの点で同一です。$ZF(-100) は、すべての目的に適した関数であり、$ZF(-1)$ZF(-2) の両方の代わりに使用できます。

  • $ZF(-2) は OS シェルを使用して実行されます。この関数は非同期的に実行されます。現在のプロセスの実行を中断しません。子プロセスの生成において、直ちにステータスの値を返します。作成された子プロセスの完了を待たないので、そのプロセスからのステータス情報は受信できません。$ZF(-2) は、5 番目の引数が True の場合、$ZCHILD を設定します。

  • $ZF(-1) は OS シェルを使用して実行されます。この関数は同期的に実行されます。作成された子プロセスの完了を待つ間、現在のプロセスの実行を中断します。作成されたプロセスからステータス情報を受信し、作成されたプロセスの完了時に、これを終了ステータス・コード (整数値) として返します。$ZF(-1) は、$ZCHILD を設定しません。

  • $ZF(-100) は、同期的または非同期的に実行できます。オペレーティング・システム・シェルを使用して実行することも、シェルを使用せずに実行することもできます。常に $ZCHILD を設定します。$ZF(-1)$ZF(-2) は両方とも、パラメータの指定なしで、オペレーティング・システム・シェルを起動します。$ZF(-100) は、オペレーティング・システム・シェルを起動するために program パラメータ (および /SHELL フラグ) が必要です。

関連項目

FeedbackOpens in a new tab