Согласно документам Erlang, вы можете использовать функцию supervisor: terminate_child с супервизорами simple_one_for_one, если вы передаете PID процесса вместо идентификатора дочерней спецификации. Однако, на практике это не работает для меня, и вместо этого функция возвращает обратно {error, simple_one_for_one}. Вот что я вижу:
(client-1@nick-desktop)9> supervisor:which_children(my_sup).
[{undefined,<0.544.0>,worker,[cf_server]}]
(client-1@nick-desktop)10> P.
<0.544.0>
(client-1@nick-desktop)11> supervisor:terminate_child(my_sup, P).
{error,simple_one_for_one}
Я что-то не так делаю, или документы на Erlang неточны? Если я не могу остановить процесс с супервизором: terminate_child, я должен просто вместо этого вызвать exit (P, shutdown)?