2015-01-19 2 views
1

Я хочу превратить Pid в erlang < 0.121.0> в строку, как бы я это сделал?Erlang: включить pid в строку

Есть ли способ сопоставить шаблон с Pid?

{Node, Index, Number} = <0.121.0>. 
+1

Для идентификации узла используйте [node/1] (http://erlang.org/doc/man/erlang.html#node-1). –

+1

Можете ли вы объяснить, почему вы этого хотите? Похоже, вы пытаетесь решить что-то не так. –

ответ

1
pid_tokens(Pid) -> 
    PidStr = pid_to_list(Pid), 
    PidStr1 = lists:sublist(PidStr, 2, length(PidStr)-2), 
    [N, P1, P2] = [list_to_integer(T) || T <- string:tokens(PidStr1,[$.])], 
    {N, P1, P2}. 

Нечто подобное может работать для вас. Где Pid - это идентификатор процесса, который вы хотите сопоставить

+0

Будьте осторожны. 'Этот BIF предназначен для отладки и использования в операционной системе Erlang. Он не должен использоваться в прикладных программах. – tkowal

+0

@tkowal любая идея, каковы риски? – BC00

+2

Вы просто не должны зависеть от внутренней структуры Pid, ​​потому что это может измениться без предупреждения. 'pid_to_list' и' list_to_pid' удобны во время отладки, когда вы копируете и вставляете pids в оболочку. Единственный момент, когда он может быть полезен в реальной программе, - это проверка, если процесс находится на удаленном узле. Для этого есть еще одна функция: 'node (Pid)'. – tkowal

Смежные вопросы