Я хочу превратить Pid в erlang < 0.121.0> в строку, как бы я это сделал?Erlang: включить pid в строку
Есть ли способ сопоставить шаблон с Pid?
{Node, Index, Number} = <0.121.0>.
Я хочу превратить Pid в erlang < 0.121.0> в строку, как бы я это сделал?Erlang: включить pid в строку
Есть ли способ сопоставить шаблон с Pid?
{Node, Index, Number} = <0.121.0>.
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 - это идентификатор процесса, который вы хотите сопоставить
Будьте осторожны. 'Этот BIF предназначен для отладки и использования в операционной системе Erlang. Он не должен использоваться в прикладных программах. – tkowal
@tkowal любая идея, каковы риски? – BC00
Вы просто не должны зависеть от внутренней структуры Pid, потому что это может измениться без предупреждения. 'pid_to_list' и' list_to_pid' удобны во время отладки, когда вы копируете и вставляете pids в оболочку. Единственный момент, когда он может быть полезен в реальной программе, - это проверка, если процесс находится на удаленном узле. Для этого есть еще одна функция: 'node (Pid)'. – tkowal
Для идентификации узла используйте [node/1] (http://erlang.org/doc/man/erlang.html#node-1). –
Можете ли вы объяснить, почему вы этого хотите? Похоже, вы пытаетесь решить что-то не так. –