1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-module(styx_service).
-behaviour(gen_server).
-export([start_link/2]).
-export([init/1, handle_info/2]).
start_link(Name, Cmd) ->
gen_server:start_link({local, Name}, ?MODULE, [Name, Cmd], []).
init([Name, Cmd]) ->
Opts = [stdout, stderr],
{ok, Pid, OsPid} = exec:run_link(Cmd, Opts),
logger:info("Started system process ~p '~p', system pid = ~p", [Name, Cmd, OsPid]),
{ok, {Name, Pid, OsPid}}.
handle_info({stdout, OsPid, Binary}, {Name, _Pid, OsPid} = State) ->
logger:info("~p[~p] ~p", [Name, OsPid, Binary]),
{noreply, State};
handle_info({stderr, OsPid, Binary}, {Name, _Pid, OsPid} = State) ->
logger:warning("~p[~p] ~p", [Name, OsPid, Binary]),
{noreply, State};
handle_info(Info, {Name, _, _} = State) ->
logger:warning("~p ~p", [Name, Info]).
|