Ruby 生成进程时出现的僵尸进程

Ruby 生成进程时出现的僵尸进程,ruby,linux,process,zombie-process,Ruby,Linux,Process,Zombie Process,我有一段代码,我在其中派生出子进程,以提高效率。然而,它们似乎创建了各种各样的僵尸进程,这些进程会阻塞套接字并关闭站点 spawn(:method => :thread) do if @login_user.suggested_group_info.new_record? xxx end end 1) 为什么要创建僵尸进程? 2) 如何编写代码以确保在进程变成僵尸之前杀死它?您必须保存生成的进程的PID,并在其死亡后对其执行waitpid(2)系统调用。(我不知

我有一段代码,我在其中派生出子进程,以提高效率。然而,它们似乎创建了各种各样的僵尸进程,这些进程会阻塞套接字并关闭站点

spawn(:method => :thread) do
   if @login_user.suggested_group_info.new_record?
       xxx
   end
end
1) 为什么要创建僵尸进程?
2) 如何编写代码以确保在进程变成僵尸之前杀死它?

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

您还可以捕获子关机,这将清理僵尸进程

trap("CLD") {
  pid = Process.wait
  puts "Child pid #{pid}: terminated"
}

Ruby做的和你想象的差不多。spawn返回一个pid;调用Process.waitpid(pid)等待进程退出,然后获取僵尸。