我在https://github.com/bvdeenen/otp_super_nukes_all设置了一个简单的测试用例,它表明 otp application:stop() 实际上会杀死所有由其子进程生成的进程,即使是那些未链接的进程。
测试用例由一个 gen_server(注册为 par)生成一个普通的 erlang 进程(注册为 par_worker)和一个 gen_server(注册为 reg_child),它也生成一个普通的 erlang 进程(注册为 child_worker)。调用 application:stop(test_app) 会在 'par' gen_server 上正常终止,但会在所有其他服务器上退出(kill)!
这是名义行为吗?如果是这样,它在哪里记录,我可以禁用它吗?我希望从我的 gen_server(不是链接)产生的进程在应用程序终止时保持活动状态。
谢谢
巴特·范迪南