有时候我们需要判断目标进程是否已经启动,如果没有启动才额外启动目标,否则skip
通常情况下我们,可以在进程表中搜索目标进程即可
在elrang中,可以借助于 erlang:whereis 函数
whereis(RegName) -> pid() | port() | undefined
Returns the pid or port identifier with the registered name RegName. Returns undefined if the name is not registered.
例子:
> whereis(db).
<0.43.0>
举例如下:
ensure_started(Args) ->
case erlang:whereis(?SERVER) of
undefined ->
{ok,Pid} = gen_server:start_link({local, ?SERVER}, ?MODULE, [Args], []),
Pid.
Pid when is_pid(Pid) ->
%%some trace here
Pidend.