2013-04-04 26 views
3

我想将一些来自套接字的二进制文件转换为稍后在gen_server调用中使用的原子。因为我不希望用新的(也可能是不合法的原子)涌入虚拟机使用:binary_to_existing_atom(Binary,Encoding)的使用

binary_to_existing_atom(二进制编码)

现在,如何(或更好的位置)我应该在系统启动时声明有效的原子,以便转换有效?

回答

6

原子在任何加载模块中使用就足够了,例如,在case表达式或其他比较中匹配。

如果比较发生在与调用binary_to_existing_atom的地方不同的模块中,那么您需要确保在进行转换时加载该模块。如果您构建了一个发行版并以“嵌入”模式运行,则所有模块都将在启动时加载。否则,模块在被调用时会被加载,所以如果有问题的模块是例如由应用程序监督树启动的gen_server,那么你很好。