我想将erlang连接到外部C#程序。我知道有多种方法可以做到这一点,1)使用端口(由OTP提供),2)TCP / UDP /网络套接字,3)os:cmd等。选项1和3假设erlang正在启动这些程序,如果您只想与外部程序进行交互,则选项2需要大量设置。
问题是:erlang是否允许创建端口&连接到已经运行的程序?我知道这引入了一些有趣的安全问题,但这个想法听起来可行,所以我想我会看到有人试图这样做。
由于
答案 0 :(得分:1)
它几乎只有你可以使用的套接字,或者mmap一些共享内存并从NIF或端口驱动程序访问它。但共享内存对于故障隔离并不是很好。
如果可以将外部程序作为端口启动,则可以在监控所有者进程时为您带来自动重启的优势。
另一种可能性是使用C节点,或者在您的情况下可能是C#节点,即。从不同语言的程序中讲Erlangs分发协议。
答案 1 :(得分:0)
还有另一种选择,我个人不推荐,但它仍然存在; CORBA http://www.erlang.org/doc/man/corba.html(公共对象请求代理体系结构)。