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)等待进程退出,然后获取僵尸。