Popen obteniendo pid del proceso recién ejecutado

Quiero ejecutar alguna aplicación en segundo plano y luego matarla por pid.

pipe = IO.popen("firefox 'some_url' 2>&1 &")
pipe.pid

Este código inicia firefox y me devuelve un poco de pid, pero desafortunadamente no es pid de firefox.

pipe = IO.popen("firefox")
pipe.pid

Este código inicia firefox y devuelve mi some pid, firefox pid. ¿Hay alguna solución para iniciar una aplicación externa y obtener su pid? Firefox es solo, por ejemplo, podría ser cualquier otra aplicación. También probé con libs como: Open3 y Open4 pero parece ser el mismo efecto. También me pregunto si '$!' bash variable es una buena solución para esto? Ejecute algo en segundo plano y lea '$!', ¿Qué le parece?

Respuestas a la pregunta(2)

Su respuesta a la pregunta