ciao!
qualcuno si ricorda di me???
(scherzo.... effettivamente è un bel po che non mi loggo)
se vuoi sapere qualcosa in più su shell e quant'altro ti consiglio di leggere qualcosa sulla programmazione di sistema linux.
Penso che per cominciare vada più che bene qualche slide di un generico corso di Laboratorio di Sistemi Operativi scaricata dai siti universitari.
Poi c'è un ottimo libro pdf gratuito che è Guida alla Programmazione in Linux, li potrai vedere in dettaglio i meccanismi di gestione dei processi, comunicazione, redirezione e sincronizzazione.
Alcuni di questi compiti infatti sono gestiti dalle shell che non hanno la semplice funzionalità di forkare processi
Per precisare poi sullo strano meccanismo di fork in due parole posso dirti che in un sistema unix, l'unico modo per avere un processo è creare una copia di uno esistente.
Pertanto anche quando vuoi lanciare un programma... che sia ls o helloworld.out devi necessariamente creare una copia di un processo (con una fork) in modo da avere un processo figlio con la copia dell'ambiente del padre (descrittori dei files, prossima istruzione, ecc...) e poi tutto questo ambiente viene completamente rimpiazzato con una chiamata exec dal nuovo programma.
Nulla infatti ti vieta di usare exec senza fork.... ma poi quando termina il programma una cosa è certa.... non ti ritorna alla shell :P
ciao
Gio