簡體   English   中英

如何使用:emu_args將標志發送到erlang vm?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM