ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
```erlang -module( admin_app ). -behaviour(application). -export( [start/2, stop/1] ). start(_Type, _State) -> %%初始化的数据 io:format( "admin_app111~p~n222~p~n", [ _Type, _State ] ), admin_sup:start(). stop(_State) -> ok. 1>application:start(log4erl). 我们就从这一行命令开始说起吧,回车之后可以把log4erl应用程序启动起来.Erlang/OTP中的能完成特定功能集合的组件被称为application. ,application是Erlang代码和功能组织的形式之一([Erlang 0015]Erlang OTP设计原则).application的设计目的是通过运行一个或者多个进程来完成一定功能.为了能够管理这些进程的生命周期,需要通过supervisor进行管理. application:start(log4erl). Start_Type = permanent||transient||temporary application:start(log4erl,temporary). Start_Type==permanent 应用程序终止之后所有其它的应用程序和运行时系统都会死掉; Start_Type==transient 应用程序终止的原因是normal,这个消息会报出来但是其它应用程序不会重启,如果应用程序终止的原因不是normal,其他应用程序和运行时也会跟着死掉; Start_Type==temporary 应用程序死掉会报错误出来但是其它应用程序不受影响. 注意实践过程中很少使用transient参数,因为进程树崩掉的时候,进程正常退出原因是shutdown不是normal, 这个我之前的文章提到过:[Erlang 0017]Erlang/OTP基础模块 proc_lib 无论使用哪种类型启动,直接调用stop方法关闭application是不会影响到其它应用程序的. 之前遇到过一个比较严重的问题导致应用崩掉,当时就有同事问为什么erlang的进程还在,或者说运行时还活着?其实就是因为我们启动应用程序的时候默认使用了temporary; ```