将 Elixir 中的进程 ID (`pid`) 转换为元组或字符串;将 `pid` 解析为其他类型
Transform Process ID (`pid`) in Elixir to Tuple or string; Parse `pid` to other types
如何将进程 ID PID
转换为元组或字符串?
例如,假设我有一个名为 my_pid
的 PID
iex(1)> my_pid
#PID<0.1692.0>
我如何将 PID ID 转换为元组或字符串来获得?
{ 0, 1692, 0 }
或
"0.1692.0"
一步一步:
pid = self() # gets shells pid e.g. #PID<0.105.0>
a = "#{inspect pid}" # gives the string "#PID<0.105.0>"
b = String.slice a, 5,100 # remove the prefix #PID<
c = String.trim b, ">" # remove the postfix >
d = String.split c, "." # create list of strings: ["0", "105", "0"]
e = Enum.map( d ,fn x -> String.to_integer(x) end) # converts to a list of integers
f = Enum.join(e, " ")
结果:"0 105 0"
您正在使用 :erlang.pid_to_list/1
和 :erlang.list_to_pid/1
函数。
list = self() |> :erlang.pid_to_list()
#⇒ [60, 48, 46, 49, 49, 48, 46, 48, 62]
to_string(list)
#⇒ "<0.110.0>"
list |> List.delete_at(0) |> List.delete_at(-1) |> to_string()
#⇒ "0.110.0"
这种方法的优点是可以转换
:erlang.list_to_pid(list)
#⇒ #PID<0.110.0>
如何将进程 ID PID
转换为元组或字符串?
例如,假设我有一个名为 my_pid
iex(1)> my_pid
#PID<0.1692.0>
我如何将 PID ID 转换为元组或字符串来获得?
{ 0, 1692, 0 }
或
"0.1692.0"
一步一步:
pid = self() # gets shells pid e.g. #PID<0.105.0>
a = "#{inspect pid}" # gives the string "#PID<0.105.0>"
b = String.slice a, 5,100 # remove the prefix #PID<
c = String.trim b, ">" # remove the postfix >
d = String.split c, "." # create list of strings: ["0", "105", "0"]
e = Enum.map( d ,fn x -> String.to_integer(x) end) # converts to a list of integers
f = Enum.join(e, " ")
结果:"0 105 0"
您正在使用 :erlang.pid_to_list/1
和 :erlang.list_to_pid/1
函数。
list = self() |> :erlang.pid_to_list()
#⇒ [60, 48, 46, 49, 49, 48, 46, 48, 62]
to_string(list)
#⇒ "<0.110.0>"
list |> List.delete_at(0) |> List.delete_at(-1) |> to_string()
#⇒ "0.110.0"
这种方法的优点是可以转换
:erlang.list_to_pid(list)
#⇒ #PID<0.110.0>