在长生不老药中创造假或虚拟的pid

Pet*_*ton 8 pid process elixir

在erlang中,可以创建一个与进程不对应的pid.使用这样的例子可以发现这里在了解你一些二郎.

pid(0,250,0).
Run Code Online (Sandbox Code Playgroud)

有没有办法在长生不老药中做同样的事情?我目前关闭的是创建一个立即终止并使用该pid的进程.

fake_pid = Process.spawn(fn -> end)
Run Code Online (Sandbox Code Playgroud)

这种接缝就像是一个黑客,我不确定从未创建的pid和死pid之间是否会有一些细微的差别.

Gaz*_*ler 16

您可以直接在Elixir中使用pid/3 Erlang函数:

:c.pid(0,250,0)
Run Code Online (Sandbox Code Playgroud)

另外 - 只是一个不是来自Erlang的文档:

将X,Y,Z转换为pid.该功能仅在调试时使用.

  • 来自 Erlang 文档:“c 模块使用户能够输入一些常用命令的缩写形式。” (2认同)

Ada*_*erg 6

出于您的目的,我将使用self()测试代码。这将解决运行当前测试用例的过程。

如果您出于某种原因需要测试另一个 pid,那么您的使用Process.spawn/1方式非常好,因为它确保 pid 未被占用(并且不指向系统中重要的东西)并且它已经死了(或活着,如果您在测试期间保持活动状态)。

Erlang:c.pid/3或新的 Elixir 1.1IEx.Helpers.pid/3只是为了在 shell 中使用方便的函数。