Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
3.4. 連想アレイ
SystemTap は、連想アレイの使用もサポートします。通常の変数は単一の値を表しますが、連想アレイでは値の集合を表すことができます。簡単に言うと、連想アレイは一意の鍵の集合です。アレイ内のそれぞれの鍵にそれに関連する値があります。
(これより後で紹介するように) 連想アレイは通常複数のプローブで処理されるので、SystemTap スクリプトでは
global
変数として宣言されるべきです。連想アレイ内の要素にアクセスする構文は awk
の構文と似ており、以下のようになります。
array_name[index_expression]
ここでの
array_name
は、アレイが使用する任意の名前になります。index_expression
は、アレイ内の特定の一意の鍵を見るために使用されます。例として、tom
、dick
、および harry
という 3 人の年齢 (一意の鍵) を指定する、arr
という名前のアレイを構築してみましょう。3 人に割り当てる年齢 (関連する値) をそれぞれ 23、24、および 25 とするには、以下のアレイステートメントを使用します。
例3.11 基本的なアレイステートメント
arr["tom"] = 23 arr["dick"] = 24 arr["harry"] = 25
アレイステートメント内では最大 9 つのインデックス式を指定することができ、それぞれをコンマ (
,
) で区切ります。これは、鍵に複数の情報が含まれる場合に便利です。例4.9「disktop.stp」 からの以下の行では、プロセス ID、実行可能ファイル名、ユーザー ID、親プロセスの ID、および文字列 "W" という 5 つの要素を使用しています。ここでは、devname
の値を鍵に関連付けています。
device[pid(),execname(),uid(),ppid(),"W"] = devname
重要
連想アレイは単一プローブで使用されるか複数プローブで使用されるかに関わらず、すべてを
global
と宣言する必要があります。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。