Port Drivers
Portsと同じようにErlangのプロセスごとのリソース 危険
Port driversがクラッシュした場合にはErlang VMごとクラッシュする
Erlang VMのschedulerがpreemptしない
ElixirからPort Driversを使う
code:ex
:ok = :erl_ddll.load("./priv", "cat") # load ./priv/cat.so
port = Port.open({:spawn_driver, "cat"}, :binary) Port.command(port, "meow")
receive do
{^port, {:data, response}} ->
IO.inspect(response)
end
Port Driversを実装する
簡単な例
libpqを使った例
Synchronous Driverの例
ErlDrvEntryのready_input, ready_outputを利用したAsynchronouse Driverの例
driver_asyncを利用したAsynchronouse Driverの例
Elixirにデータを送る場合
参考