二进制文件是什么意思?

时间:2016-02-06 21:06:45

标签: elixir

当我导入包含以下函数的exs文件时:

iex(6)> import_file("mymath.exs")
{:module, MyMath,
 <<70, 79, 82, 49, 0, 0, 4, 212, 66, 69, 65, 77, 69, 120, 68, 99, 0, 0, 0, 147, 131, 104, 2, 100, 0, 14, 101, 108, 105, 120, 105, 114, 95, 100, 111, 99, 115, 95, 118, 49, 108, 0, 0, 0, 4, 104, 2, ...>>,
 {:square, 1}}

二进制文件到底代表什么?

2 个答案:

答案 0 :(得分:3)

Elixir构建在Erlang之上以提供分布式和容错, 这个数字序列&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; 70表示在Erlang VM(BEAM)中运行的二进制代码。

作为现实示例,您可以使用它来进行热代码部署。怎么样? 使用带有load binary的rpc调用,将二进制代码作为参数传递。

{_Module, Binary, Filename} = code:get_object_code(Module).
 rpc:call(Node, code, load_binary, [Module, Filename, Binary]).

关注一篇非常好的文章,了解它是如何工作的,以及如何在erlang节点之间操作字节码。 http://seanstavro.com/blog/elixir-slave-nodes/

干杯, @MC

答案 1 :(得分:1)

数字是导入模块的二进制表示。