No, you cannot ensure EPMD is started in a cleaner way.
TL;DR
EPMD is an external program, implemented in C. Whilst net_kernel:start/1
takes care of creating the net_sup
supervisor, it does not actually trigger the EPMD daemon, which has to be started explicitely. I had a look at how EPMD is started when the -sname
option is specified in the erl
command and - surprise, surprise - I discovered that the epmd
program is started via a system()
C call.