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 と宣言する必要があります。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.