如何使用 :emu_args 将标志发送到 erlang 虚拟机?
How do I send flags to the erlang vm using :emu_args?
我想向 erlang 虚拟机发送参数,但是 'emu_args: "+A32"' 出现在“-escript main parallel_tree_walk_escript”之后,似乎成为 elixir 程序的参数而不是影响 erlang 虚拟机。
没有 '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 虚拟机,而是作为 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
这行不通。
如果我生成一个脚本,并手动添加 -emu_args
标志,就像您移动 +A32
标志一样,无论 +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
标志进入了虚拟机。
这是我第一次看 escripts,所以我很好奇 beam 的参数最终是 -A32
而不是 +A32
,但这似乎是两者之间的区别直接或通过脚本执行模拟器。调用 …beam.smp --help
确实列出了 -A
版本以及最后的注释:
Note that if the emulator is started with erlexec (typically
from the erl script), these flags should be specified with +.
我想向 erlang 虚拟机发送参数,但是 'emu_args: "+A32"' 出现在“-escript main parallel_tree_walk_escript”之后,似乎成为 elixir 程序的参数而不是影响 erlang 虚拟机。
没有 '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 虚拟机,而是作为 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
这行不通。
如果我生成一个脚本,并手动添加 -emu_args
标志,就像您移动 +A32
标志一样,无论 +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
标志进入了虚拟机。
这是我第一次看 escripts,所以我很好奇 beam 的参数最终是 -A32
而不是 +A32
,但这似乎是两者之间的区别直接或通过脚本执行模拟器。调用 …beam.smp --help
确实列出了 -A
版本以及最后的注释:
Note that if the emulator is started with erlexec (typically from the erl script), these flags should be specified with +.