如何只知道用于启动它的模块名称,如何终止Erlang中的进程?
答案 0 :(得分:9)
如果是简单的调试,你可以运行pman:start(),只需查看进程(双击一个条目即可查看初始调用等详细信息)。然后你可以直接从pman中杀死它。
否则,您可以使用erlang:processes()列出系统中的所有进程(可怕,我知道),并在每个进程上运行erlang:process_info(Pid,initial_call)以找到正确的进程。完成后,只需使用exit(Pid,kill)。
答案 1 :(得分:4)
没有办法做到这一点。
您最好的选择是根据注册名称和/或流程的初始调用进行推测。
答案 2 :(得分:1)
您仍然可以通过其他方式找到该过程,即使它没有注册。例如,您可以查看像pman(pman:start())这样的进程监视器,看看是否在那里找到它。 pman允许您过滤许多标准,这可能会导致您进入正确的过程。或者你可以启动调试器,在模块中安装断点,下次进程执行某些操作时,它会被中断,调试器会弹出一个窗口,在标题栏中你可以读取进程的PID被打断了。
获得PID后,可以使用pid(A,B,C)。从中伪造一个PID对象,并用它来杀死进程。