2012-08-16 13 views

Respuesta

25

@ obras respuesta de TanzeebKhalili, pero que podría considerar Kernel.spawn(), que no espera a que el proceso para volver:

pid = spawn("./test.sh") 
Process.detach(pid) 

Tenga en cuenta que, según la documentación, ya sea que use spawn() o manualmente fork() y system() , debe tomar el PID y Process.detach() o Process.wait() antes de salir.

En cuanto a la reorientación de error y la salida estándar, eso es fácil con spawn():

pid = spawn("./test.sh", :out => "test.out", :err => "test.err") 
Process.detach(pid) 
+0

Niza, también trabaja en las ventanas! con múltiples procesos que escriben para probar. Algunas líneas están distorsionadas, aunque – peter

+0

@peter Sí, hacer grabaciones en el mismo archivo al mismo tiempo desde múltiples procesos en efecto, confunde algunas líneas. Hay una serie de soluciones para ese problema, pero la más simple es simplemente escribir en un archivo separado de cada proceso. De lo contrario, es probable que desee un proceso separado para multiplexar la salida. –

8

Prueba esto:

Process.fork { system "./test.sh" } 

no funcionará en Windows, para lo cual se pueden utilizar roscado.

Cuestiones relacionadas