我有一个名为 tb 的 Erlang 应用程序,它通过执行 application:start(tb) 从 Erlang 命令行运行良好。而当我尝试使用 os:cmd 从 escript 内部调用相同的应用程序时,该应用程序似乎没有运行。当我做一个'ps | grep beam',我看到 beam.smp 进程正在运行。但是应用程序没有生成任何输出。可能是什么问题?有没有更好的方法从 escript 内部启动另一个 erlang VM?
这是代码片段:
net_kernel:start([tb_escript, shortnames]),
read_config_file(FName),
Cookie = get(cookie),
Node = get(node),
N = io_lib:format("~p",[Node]),
lists:flatten(N),
C = io_lib:format("~p",[Cookie]),
lists:flatten(C),
EBIN = "~/tb/ebin",
erlang:set_cookie(tb_escript,Cookie),
os:cmd("erl -pa " ++ EBIN ++ " -sname " ++ N ++ " -detached " ++ " -setcookie " ++ C ++ " -s application start tb").