Process 在elixir中创建假pid或伪pid

Process 在elixir中创建假pid或伪pid,process,pid,elixir,Process,Pid,Elixir,在erlang中,可以创建与进程不对应的pid。可以在LearnyousomeErlang中找到一个使用此方法的示例 pid(0,250,0). 在长生不老药中也有同样的方法吗? 我现在得到的结论是创建一个进程,该进程立即终止并使用该pid fake_pid = Process.spawn(fn -> end) 这有点像黑客,我不确定从未创建的pid和死掉的pid之间是否有细微的区别。您可以使用Erlang函数: 另外-只是Erlang文档中的一个例外: 将X、Y、Z转换为pid。此功

在erlang中,可以创建与进程不对应的pid。可以在LearnyousomeErlang中找到一个使用此方法的示例

pid(0,250,0).
在长生不老药中也有同样的方法吗? 我现在得到的结论是创建一个进程,该进程立即终止并使用该pid

fake_pid = Process.spawn(fn -> end)
这有点像黑客,我不确定从未创建的pid和死掉的pid之间是否有细微的区别。

您可以使用Erlang函数:

另外-只是Erlang文档中的一个例外:

将X、Y、Z转换为pid。此功能仅应在调试时使用


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

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


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

这是什么
:c
模块?来自Erlang文档:“c模块允许用户输入一些常用命令的简短形式。”创建假pid的问题在于,您无法确定它是否引用了实际流程。您可以创建一个,然后立即检查由该pid标识的任何进程是否处于活动状态,但即使当时没有一个进程,稍后也可能会出现一个具有该pid的进程。你为什么需要假pid?你到底想做什么?我正在测试一个函数,它将pid作为一个参数。对于其他参数的某些组合,不使用pid。所以我只需要一个pid来通过警卫检查,但不需要引用任何东西
:c.pid(0,250,0)