2010-06-22 37 views
60

¿Cómo implemento fork y exec en bash?tenedor y ejecutivo en bash

Hagamos guión supongamos que

echo "Script starts" 

function_to_fork(){ 
sleep 5 
echo "Hello" 
} 

echo "Script ends" 

Básicamente quiero que la función de ser llamado como nuevo proceso como en C utilizamos horquilla y exec llamadas ..

Desde el guión se espera que la la secuencia de comandos principal terminará y luego de 5 segundos, se imprimirá "Hola".

Respuesta

105

Utilice el signo igual que lo haría de la cáscara.

#!/usr/bin/bash 
function_to_fork() { 
    ... 
} 

function_to_fork & 
# ... execution continues in parent process ... 
+2

Esto no es exactamente lo mismo que "tenedor". Pruebo un comando usando un tenedor en C o Ruby, y funciona bien. Pero al usar "&" como arriba, falla. – user180574

+0

Agradable, pero ... Generalmente fallo cuando trato de usar una función. Utilizo un script separado y lo llamo. Mucho más versátil La funcionalidad de redireccionamiento y en segundo plano es más intuitiva y se puede probar más fácilmente desde la línea de comandos. – nroose

29

¿Qué tal:

(sleep 5; echo "Hello World") & 
+0

Eso es tenedor y espera, – Brian

+0

@staticx Lo que significa que el proceso se bifurcará, pero el padre no continuará la ejecución hasta los '()' regresa? – msanford

+0

@Brian esto no me espera, solo tenedores – BryanK