Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang Can';我不能让主管去工作_Erlang_Otp_Elixir - Fatal编程技术网

Erlang Can';我不能让主管去工作

Erlang Can';我不能让主管去工作,erlang,otp,elixir,Erlang,Otp,Elixir,我试图在OTP和erlang(尽管我正在使用elixir)中了解主管,但我似乎不明白为什么主主管树不会启动 我正在使用一个侦听器工作程序创建一个http服务器,并且一个主管具有处理程序(动态启动)。我可以自己启动每一个,如果侦听器是树中唯一的东西,我可以启动树 以下是elixir中的主管定义 defmodule HTTPServer.Supervisor do use Supervisor.Behaviour def start_link(port) do :superviso

我试图在OTP和erlang(尽管我正在使用elixir)中了解主管,但我似乎不明白为什么主主管树不会启动

我正在使用一个侦听器工作程序创建一个http服务器,并且一个主管具有处理程序(动态启动)。我可以自己启动每一个,如果侦听器是树中唯一的东西,我可以启动树

以下是elixir中的主管定义

defmodule HTTPServer.Supervisor do
  use Supervisor.Behaviour

  def start_link(port) do
    :supervisor.start_link({ :local, :sup }, __MODULE__, [port])
  end

  def init(port) do
    tree = [
      worker(HTTPServer.Listener, [port], id: :listener_sup),
      supervisor(HTTPServer.HandlerSupervisor, [], shutdown: :infinity,
                                                   modules: [])
    ]
    supervise(tree, strategy: :one_for_one)
  end
end

defmodule HTTPServer.HandlerSupervisor do
  use Supervisor.Behaviour

  def start_link(_) do
    IO.puts "starting handler supervisor"
    :supervisor.start_link({ :local, :handler_sup }, __MODULE__, [])
  end

  def init(_) do
    tree = [ worker(HTTPServer.Handler, [], restart: :temporary,
                                            id: nil) ]
    supervise(tree, strategy: :simple_one_for_one)
  end

  def start_child([socket]) do
    IO.puts "starting handler child"
    :supervisor.start_child(:handler_sup, [socket])
  end
end
树中关于主管定义的某些内容是错误的,我不知道是什么,这似乎是阻碍我的项目的唯一因素


谢谢你的帮助

我通过尝试动态添加它,找到了它为什么会出现问题。事实证明,HTTPServer.HandlerSupervisor.start_链接的arity应该是0,而不是1