在Promela中访问另一个进程的局部变量

时间:2012-12-25 15:14:05

标签: spin

是否可以从另一个进程访问一个进程的局部变量值。 例如,在下面的程序中,我想从经理中读取my_id的值。

proctype user (byte id){
    byte my_id = id;
}

proctype manager (){
     printf ("my_id : %d \n" , user:my_id);

}


init {
    run user (5);
    run manager();

}

2 个答案:

答案 0 :(得分:1)

您可以使用c_code {}和/或c_expr()语法完成此操作。以下是SPIN手册中的一个示例:

active proctype ex1()
{   int x;

    do
    :: c_expr { Pex1->x < 10 } ->
        c_code { Pex1->x++; }
    :: x < 10 -> x++
    :: c_expr { fct() } -> x--
    :: else -> break
    od
}

可以使用c_expr {}内的'Pex1-&gt; x'访问'ex1'的本地'x'。

答案 1 :(得分:1)

您可以使用&#34; procname [pid]:var&#34;来引用局部变量的当前值。