Come ho già detto, quando usi la fork il programma si divide in due processi (condividono la memoria per le costanti e per il codice, ma ognuno dei due ha una copia personale delle variabili) e ogni processo può eseguire funzioni diverse dagli altri...Originariamente inviato da kNemo
mmm.. Qualcosa in piu' ho capito...
![]()
Ma potresti farmi l'esempio con il recv() non l'ho capito ma mi interessa...
Se vuoi utilizzare una funzione che blocca il programma (come la scanf, o la recv, che bloccano l'esecuzione del programma finchè non ricevono valore), ma vuoi che il programma resti in ascolto, ma continui anche ad eseguire altre operazioni puoi farlo in questo modo:
forki il programma e metti il figlio in ascolto (gli fai eseguire la funzione recv), mentre al padre fai eseguire altre operazioni...
Devo dire però che per fare questo però non conviene questo metodo, poichè copia TUTTE le variabili di tutte le funzioni del programma... Conviene invece usare i pthread ( POSIX Thread ), che permettono di creare thread che hanno una copia delle variabili di una specifica funzione...
La fork infatti più che venire utilizzata a questi scopi viene usata per far eseguire al programma un altro programma continuando però a girare. Si fa in questo modo:
Esegui la fork e al processo figlio fai eseguire una funzione della famiglia execve per richiamare un altro programma, mentre il padre continua normalmente.
(quant'è brutto sto ciauz
)

(quant'è brutto sto ciauz
)
Rispondi quotando