|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2004
Messaggi: 156
|
[c] creare n processi con fork
Devo creare n processi che eseguano contemporaneamente la stessa fuzione.
Ho provato a fare così Codice:
for(i=0; i < n; ++i){
pid[i] = fork();
if(pid[i]==0)
funzione();
}
Come posso fare per crearli tutti assieme? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
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.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
si ma con wait il padre aspetta che il figlio sia terminato ... lui vuole che tutti esistano allo stesso momento
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Quote:
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
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.
Codice:
if(pid[i]==0) {
funzione();
break;
}
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Aug 2004
Messaggi: 156
|
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:52.



















