[erlang-questions] displaying the globally, registered name in Observer

James Rosenblum <>
Tue Dec 4 18:29:36 CET 2012



I am writing a distributed application and could not seem to find a way to get Observer's Applications pane to show the registered name of a process when that process is globally registered (as in gen_server:start_link({global, Name}, ?MODULE, [],[])).

I also couldn't find a global method which returned a registered name given a pid. So, I added a function go the global module

pid_2_name(Pid) ->
    case ets:lookup(global_pid_names, Pid) of
[{Pid, Name}] -> 
    if node(Pid) == node() ->
    case is_process_alive(Pid) of
true -> Name;
false -> undefined
    end;
       true ->
    Name
    end;
[] -> undefined
    end.

and then I modified appmon_info and observer_procinfo to make use of this function when process_info failed to return a {registered_info, _} tuple. I did this sort of thing:

 case process_info(P, registered_name) of
{registered_name, Name} -> atom_to_list(Name);
_ ->
    case global:pid_2_name(P) of
undefined -> pid_to_list(P);
Name -> "*" ++ atom_to_list(Name)
    end
    end;

So was this a totally unsafe and / or  unnecessary thing to do; or, is this for the most part an okay thing to do?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20121204/b8308e5d/attachment.html>


More information about the erlang-questions mailing list