Elixir 如何使用:emu_args向erlang vm发送标志?

Elixir 如何使用:emu_args向erlang vm发送标志?,elixir,elixir-mix,escript,Elixir,Elixir Mix,Escript,我想向erlang vm发送参数,但是“-escript main parallel_tree_walk_escript”后面会出现“emu_args:+A32”,并且似乎会成为elixir程序的参数,而不会影响erlang vm 如果没有“emu_args:+A32”,则由“mix escript.build”创建的文件包含第三行 %%! -escript main parallel_tree_walk_escript 如果我用emacs(可以很好地处理非ascii内容)将该行更改为 但是,

我想向erlang vm发送参数,但是“-escript main parallel_tree_walk_escript”后面会出现“emu_args:+A32”,并且似乎会成为elixir程序的参数,而不会影响erlang vm

如果没有“emu_args:+A32”,则由“mix escript.build”创建的文件包含第三行

%%! -escript main parallel_tree_walk_escript
如果我用emacs(可以很好地处理非ascii内容)将该行更改为

但是,如果我在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

这不起作用。

如果我生成一个escript,并手动添加
-emu_args
标志,就像移动
+A32
标志一样,无论
+A32
在escript名称之前还是之后,我都会得到相同的输出:

# %%! -emu_args -escript main test_escript +A32 
# %%! +A32 -emu_args -escript main test_escript
两者都会产生(为了简洁起见,截断了一些路径):

执行:…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
标志正在到达虚拟机

这是我第一次研究描述,所以我很好奇beam的参数最终是
-A32
,而不是
+A32
,但这似乎是直接执行模拟器和通过脚本执行模拟器之间的区别。调用
…beam.smp--help
确实列出了
-A
版本以及最后一个注释,其中说明:

请注意,如果仿真器是用erlexec启动的(通常是 从erl脚本中),这些标志应使用+指定


如果我生成一个escript,并手动添加
-emu_args
标志,就像移动
+A32
标志一样,无论
+A32
是在escript名称之前还是之后,我都会得到相同的输出:

# %%! -emu_args -escript main test_escript +A32 
# %%! +A32 -emu_args -escript main test_escript
两者都会产生(为了简洁起见,截断了一些路径):

执行:…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
标志正在到达虚拟机

这是我第一次研究描述,所以我很好奇beam的参数最终是
-A32
,而不是
+A32
,但这似乎是直接执行模拟器和通过脚本执行模拟器之间的区别。调用
…beam.smp--help
确实列出了
-A
版本以及最后一个注释,其中说明:

请注意,如果仿真器是用erlexec启动的(通常是 从erl脚本中),这些标志应使用+指定


好吧,现在我不知道该怎么想:第三行末尾的“+A32”我认为是失败的(“不起作用”)正按照今天的预期工作,因为main(args\\[])的参数列表是“/parallel_tree_walk.”调用和“:erlang.system_info(:thread\u pool\u size)”应该是什么样的返回32个完全符合预期。我不知道发生了什么事。也许我在我的各种尝试中被删除了一个打字错误。谢谢你的时间。好吧,现在我不知道该怎么想:我认为失败的第三行末尾的“+A32”(“不起作用”)正按照今天的预期工作,因为main的参数列表(args\\\[])就是它们应该与“/parallel_tree_walk.”调用和“:erlang.system_info(:thread_pool_size)”返回的是32,与预期的完全一致。我不知道发生了什么。可能是我在各种尝试中删除了一个拼写错误。谢谢您的时间。