View Full Version : [c] creare n processi con fork
Devo creare n processi che eseguano contemporaneamente la stessa fuzione.
Ho provato a fare così
for(i=0; i < n; ++i){
pid[i] = fork();
if(pid[i]==0)
funzione();
}
facendo così mi crea un processo, poi aspetta che la funzione ritorni e ne crea un'altro.
Come posso fare per crearli tutti assieme?
Il processo padre non attende la terminazione del figlio prima di proseguire nella creazione deglialtri processi, difatti esistono apposite funzioni come la wait per realizzare queste forme di sincronizzazione. Probabilmente quello che accade è che appena creato il processo figlio questo prende il controllo della cpu e termina perche magari la funzione che invoca termina subito e te hai l'implessione che il processo sia terminato. Fa in modo che il processo figlio si fermi, ad esempio chiedendo dell'input all'utente cosi potrai constatare che il padre crea tutti i figli anche se il primo no è terminato.
Fenomeno85
23-08-2005, 23:00
si ma con wait il padre aspetta che il figlio sia terminato ... lui vuole che tutti esistano allo stesso momento
~§~ Sempre E Solo Lei ~§~
si ma con wait il padre aspetta che il figlio sia terminato ... lui vuole che tutti esistano allo stesso momento
~§~ Sempre E Solo Lei ~§~
Appunto...siccome lui non usa la wait i processi vengono creati tutti insieme proprio come vuole lui, solo che probabilmente i figli durano troppo poco perchè la "simultaneità" della loro esecuzione sia percepibile.
Attento! Quel codice non crea 10 figli ma molti di più. Una volta terminata la funzione() devi uscire dal ciclo altrimenti anche il figli incomincerà a creare altri figli a sua volta.
if(pid[i]==0) {
funzione();
break;
}
ciao ;)
Ok ho risolto.
i processi giravano simultaneamente, però visualizzavo male l'output, per cui si sovrapponevano uno sull'altro e non me ne accorgevo.
Graziea tutti
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.