Итак, сначала вы хотите поймать досрочное завершение ребенка с помощью process_flag(trap_exit, true)
в вашем инициализации.
Затем вам нужно решить, на сколько вы хотите отложить перезапуск, например, на 10 секунд.., сделайте это в
handle_info({'EXIT', _Pid, Reason}, State) ->
erlang:send_after(10000, self(), {die, Reason}),
{noreply, State};
Наконец, позвольте процессу умереть с
handle_info({die, Reason}, State) ->
{stop, Reason, State};