SystemTap新手指南

 主页   资讯   文章   代码   电子书 

3.4. 关联数组

SystemTap支持关联数组。关联数组就像其它编程语言中的map/dict/hash,你可以把它看作由互不相同的键所组成的数组,每个键都有一个关联的值。

关联数组需要定义为全局变量。访问关联数组的值的语法跟awk类似,就是array_name[index_expression]。 这里的array_name指关联数组的名字,index_expression指数组中某个唯一的键。比如在下面的例子中,我们需要在数组foo中存tom、dick、harry三个人的年龄,可以这么写:

foo["tom"] = 23
foo["dick"] = 24
foo["harry"] = 25

在一个数组语句中你最多可以指定九个表达式,每个表达式间以,隔开。这样做可以给单个键附加多个信息。下面一行代码中,数组device的键包含五个表达式:进程PID,可执行程序名,用户UID,父进程PID,和字符串“W”。devname值关联到这个键上面。

device[pid(),execname(),uid(),ppid(),"W"] = devname

所有的关联数组都必须是全局变量,不管它们是否使用在多个探针内。