Quiero spawn un proceso potencialmente largo y guardar su PID para poder eliminarlo más tarde si es necesario. El problema es que el PID que obtengo de spawn no es el mismo que obtengo de Process.pid (en el proceso secundario). El resultado de Process.pid coincide con lo que veo ejecutando ps en la línea de comandos.
Aquí está el código para padre e hijo.
puts "Hi parent" pid = spawn "ruby child.rb 10 &" puts pid Process.detach(pid) sleep 3 puts "Bye parent" puts "Start pid #{Process.pid}" sleep ARGV.first.to_i puts "End pid #{Process.pid}" Hi parent 1886789 Start pid 1886791 Bye parent End pid 1886791Parece que el operador de trabajo en segundo plano ( & ) está provocando el proceso intermedio 1886789 . Cuando elimino el operador de trabajo en segundo plano, obtengo el siguiente resultado:
Hi parent 93185 Start pid 93185 Bye parent End pid 93185