| 
		Non è vero che è un obbrobrio e createprocess non è molto diversa. L'unica differenza è nella semantica appunto, ma l'implementazione di fork degli unix moderni ( linux, freebsd, ecc... ) è efficiente almeno quanto la createprocess.
 Inoltre la fork è molto più semplice da utilizzare e accoppiata all'exec dà molta flessibilità ed estrema facilità d'uso.
 
 Ad esempio una fork sotto unix ti permette di creare un clone del processo corrente ( si, è un'operazione utile in taluni casi ), mentre la createprocess non clona il processo.
 
 Si tratta di due funzioni nate per scopi molti diversi. L'errata convinzione circa la bruttezza di fork è dovuta al fatto che le prime implementazioni copiavano fisicamente tutta la memoria del padre nel processo figlio, perdendo tempo. Oggi si usa il copy-on-write e la memoria viene clonata solo se necessario ( se ad esempio fai fork e poi subito exec, non perderà tempo nel clonare il padre visto che non serve ).
 
 Ad ogni modo, se vuoi ottenere lo stesso risultato su entrambi i sistemi, devi per forza prevedere due distinti procedure nel codice. Puoi usare le direttive di compilazione per compilare selettivamente l'una o l'altra.
 			 Ultima modifica di pabloski : 10-01-2012 alle 15:46.
 |