有没有办法访问UNIX domain sockets(例如/var/运营/d-bus/system_bus_socket)直接从厄兰 没有 诉诸于第三方的驱动程序?

有帮助吗?

解决方案

二郎/检察官办公室配有司机的tcp and udp sockets只。所以...

没有。

第三部分的司机

其他提示

在二郎/ OTP 19.0,UNIX套接字是现在可用,如在自述指出

  

OTP-13572的应用(一个或多个):专家评审组,核

     

相关ID(或多个):PR-612

     

<强> * * HIGHLIGHT

     用于UNIX域套接字

实验支持一直                  实现。读到的资料,如果你想尝试一下                  出。例如:gen_udp:打开(0,                  [{ifaddr的,{地方, “/ TMP /插座”}}])。文件将                  对实验API用户反馈之后被写入。

示例:

lsock.erl:

-module(lsock).
-export([watcher/1, test/0]).

watcher(Parent) -> 
  {ok, Sockin} = gen_udp:open(0, [{ifaddr, {local, "/tmp/testsockin"}}]),
  io:format("watcher ok? ~w ~w~n", [ok, Sockin]),
  Parent ! start,
  receive
    Msg -> io:format("watcher got: ~p ~n", [Msg]) end.

test() ->
  file:delete("/tmp/testsockin"),
  file:delete("/tmp/testsockout"),
  _ = spawn(lsock, watcher, [self()]),
  {ok, Sockout} = gen_udp:open(0, [{ifaddr, {local, "/tmp/testsockout"}}]),
  io:format("parent ok? ~w ~w~n", [ok, Sockout]),
  receive start ->
    gen_udp:send(Sockout, {local, "/tmp/testsockin"}, 0, "hi") end.

和下面展示了其结果:

$ erlc lsock.erl 
$ erl
Erlang/OTP 19 [erts-8.0.1] [source-ca40008] [64-bit] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V8.0.1  (abort with ^G)
1> lsock:test().
<0.58.0>
parent ok? ok #Port<0.455>
watcher ok? ok #Port<0.456>
watcher got: {udp,#Port<0.456>,{local,<<"/tmp/testsockout">>},0,"hi"} 
ok
2> 

nanomsg 图书馆 支持Unix domain sockets, enm 驾驶员 提供了一个爱尔兰具有约束力的语言 nanomsg.

例如,开放应侧的一个请求/回应的协议和结合一个Unix域座地址:

Url = "ipc:///path/to/socket/file",
{ok,Rep} = enm:rep([{bind,Url}]),

在这里, Rep 是一个 nanomsg 插座。它支持 sendrecv 以及所有常朗 {active, true | false | N} 模式,等等。经常朗TCP/中/UDP sockets提供。更多详情,请查询 enm 自述。.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top