![](/img/trans.png)
[英]In erlang, how do I interpret the `+` operator in `fun erlang:'+'/2`
[英]How do I send flags to the erlang vm using :emu_args?
我想向erlang vm發送參數,但是'emu_args:“ + A32”在“ -escript main parallel_tree_walk_escript”之后出現,並且似乎成為elixir程序的參數,而不影響erlang VM。
如果沒有'emu_args:“ + A32”',則由“ mix escript.build”創建的文件包含第三行
%%! -escript main parallel_tree_walk_escript
如果我用emacs更改該行(與非ascii內容完全匹配),我似乎得到了想要的結果
%%! +A32 -escript main parallel_tree_walk_escript
但是,如果我在mix.esx中使用'emu_args:“ + A32”,則該行將變為
%%! -escript main parallel_tree_walk_escript +A32
...和“ + A32”似乎並沒有進入erlang vm,而是顯示為args數組的第一個命令行元素。
# permits emacs edit of parallel_tree_walk result
def escript do
[
main_module: ParallelTreeWalk,
]
end
但這顯然將論點放在錯誤的位置:
def escript do
[
main_module: ParallelTreeWalk,
emu_args: "+A32"
]
end
我希望
%%! +A32 -escript main parallel_tree_walk_escript
但是結果是
%%! -escript main parallel_tree_walk_escript +A32
這不起作用。
如果生成電子腳本,並以與移動+A32
標志相同的方式手動添加-emu_args
標志,則無論+A32
是在電子腳本名稱之前還是之后,我都會得到相同的輸出:
# %%! -emu_args -escript main test_escript +A32
# %%! +A32 -emu_args -escript main test_escript
兩者都會產生(為了簡潔起見,將一些路徑截斷了):
Executing: …beam.smp ./test -B -A32 -- -root …erlang/21.3 -progname erl -- -home /Users/adam -- -boot no_dot_erlang -noshell -escript main test_escript -run escript start -extra ./test
也許您可以嘗試添加emu_args
參數以查看發生了什么。 可能是+A32
標志進入了VM。
這是我第一次查看腳本,因此我很好奇beam的參數以-A32
而不是+A32
-A32
,但這似乎是直接執行仿真器或通過腳本執行仿真器之間的區別。 實際上,調用…beam.smp --help
確實會列出-A
版本以及最后的注釋:
請注意,如果仿真器以erlexec啟動(通常是從erl腳本啟動),則這些標志應使用+指定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.