2013-02-16 2 views
1

Проще говоря; как я могу закончить процесс, если я случайно забыл приравнять переменную Pid, ​​когда я начал процесс с помощью этого:erlang: завершение процесса без знания PiD?

9> trivial_process:start(). 
<0.67.0> 
10> 

Я знаю, что я должен был бы написать Pid = trivial_process:start(). Есть ли какой-нибудь способ взять < 0.67.0> и оканчиваются процесс?

-module(trivial_process). 
-export([start/0]). 

start() -> 
    spawn(fun() -> loop() end). 

loop() -> 
    receive 
    Any -> 
     io:format("~nI got the message: ~p~n",[Any]), 
     loop() 
    end. 

EDIT: Answer.

8> Pid = "<0.67.0>". 
9> A2 = list_to_pid(Pid). 
<0.67.0> 

ответ

2

Вы можете использовать функцию list_to_pid. Документы: here. Вы не должны использовать это в развернутом коде, это полезно только для отладки. Он также не работает с удаленными сообщениями.

Код: Something maybe you don’t know about Erlang PIDs

+0

Не могли бы вы привести пример. Я попробовал этот 'Pid2 = list_to_pid (« <0.67.0> ») .' без везения ... – pandoragami

+0

Хорошо, просто посмотрел вашу ссылку, где показан шаг 8-9. ОК – pandoragami

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