本系列文章是针对ejabberd16.06版本的源码分析, 由于水平有限,时间仓促, 难免有错误之处, 希望大家谅解。
OTP中提供了很多组件, 每个组件实现指定功能。这些组件被称作application。 ejabberd也被打包成application。 所以, ejabberd的启动就是application的启动。启动erlang VM时可以指定程序的入口点,这样就可以在这个入口中执行启动application的操作。这个入口点通过-s参数来指定。
1、erl -s ejabberd(ejabberd启动命令的一部分)
这个参数指定后, VM启动后,调用ejabberd:start()无参函数。
ejabberd.erl:
如代码所示: application:start(ejabberd). 会启动一个ejabberd的应用,这里,VM就会在搜索目录中找到ejabberd.app这个文件,如果找不到,报错,如果找到,则按这个文件中的指示,启动ejabberd应用。*.app文件的细节看文档:http://erlang.org/doc/man/app.html
ejabberd.app:
ejabberd_app.erl:
mod指定调用ejabberd_app:start(normal, _Args)这个函数。
启动的细节待续。。。。。