当我产生进程时出现僵尸进程

min*_*eow 6 ruby linux process zombie-process

我有一些代码,我生成子进程,以提高效率.但是,它们似乎会创建各种阻止套接字并关闭网站的僵尸进程.

spawn(:method => :thread) do
   if @login_user.suggested_group_info.new_record?
       xxx
   end
end
Run Code Online (Sandbox Code Playgroud)

1)为什么这会创建僵尸进程?2)我怎样才能编写代码,以确保在成为僵尸之前杀死进程?

Dan*_*wby 4

您必须保存生成的进程的 PID,并在其终止后对其执行 waitpid(2) 系统调用。(我不知道 Ruby 是如何做到这一点的。)

  • Ruby 所做的与您所期望的差不多。Spawn 返回一个 pid;调用 Process.waitpid(pid) 等待进程退出,然后获取僵尸进程。 (2认同)