Erlang - Windows Service
1. Demo code (myservice.erl):
-module(myservice).
-compile(export_all).
start() ->
BasicSocketOpts = [binary, {active, true}],
{ok, LSocket} = gen_tcp:listen(10000, BasicSocketOpts),
start_accept(LSocket).
start_accept(LSocket) ->
{ok, Socket} = gen_tcp:accept(LSocket),
erlang:spawn(fun() -> ?MODULE:start_accept(LSocket) end),
loop(Socket).
loop(Socket) ->
receive
Msg ->
error_logger:info_msg("Receive: ~p~n", [Msg]),
gen_tcp:send(Socket, <<"noted.">>),
loop(Socket)
end.
2. Install it as a service (as an Adminstrator and with C:\dev\erl5.10.1\erts-5.10.1\bin\erlsrv.exe):
erlsrv add myservicename -w "C:\Users\johnson\Desktop" -c "test erlang erlsrv" -ar "-pa C:\Users\johnson\Desktop\erlsrv -eval \"myservice:start()\""
3. Service management:
erlsrv add|set|start|stop|enable|disable|remove|list myservicename
4. Doc: http://www.erlang.org/doc/man/erlsrv.html