2010-06-22 13 views
60

Come si implementa fork ed exec in bash?fork ed exec in bash

Facciamo sceneggiatura supponiamo come

echo "Script starts" 

function_to_fork(){ 
sleep 5 
echo "Hello" 
} 

echo "Script ends" 

Fondamentalmente voglio che la funzione di essere chiamato come nuovo processo come in C usiamo le chiamate fork ed exec ..

Dalla sceneggiatura si prevede che il lo script genitore terminerà e dopo 5 secondi verrà stampato "Hello".

risposta

105

Utilizzare la e commerciale proprio come si farebbe dal guscio.

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

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

Questo non è esattamente lo stesso di "forchetta". Esamino alcuni comandi usando fork in C o Ruby, e funziona bene. Ma usando "&" come sopra, fallisce. – user180574

+0

Bello, ma ... In genere non riesco a provare quando uso una funzione. Io uso uno script separato e lo chiamo. Molto più versatile. La funzionalità di reindirizzamento e di sfondo è più intuitiva e può essere più facilmente testata dalla riga di comando. – nroose

29

ne dite:

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

Questo è fork-and-wait – Brian

+0

@staticx Il che significa che il processo si biforca, ma il genitore non continuerà l'esecuzione fino a quando i 'restituisce'()? – msanford

+0

@Brian questo non mi aspetta, solo forchette – BryanK