Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] Scelta Fork() casuale

    Salve a tutti sono nuovo!

    Vorrei chiedervi alcune cose per quanto riguarda la funzione UNIX Fork.

    Voglio creare n processi figli e far scegliere al padre un processo a caso per effettuare poi operazioni con il figlio scelto. Bene... Come si fa a scegliere un processo a caso? La variabile "pid" deve essere mica un array? Poi fino ad ora, da quanto ho capito, quando si chiama la Fork(), da lì in poi lavorerà il figlio fino alla sua terminazione... E in questo caso invece come si procede? Non credo si possa creare un array di pid e successivamente scegliere un figlio casuale... Fino ad ora ho sempre pensato che per quanti siano i figli creati, ogni operazione bisogna svolgerla comunque "una Fork alla volta"... Insomma, non mi è molto chiara questa cosa! Qualcuno sa come procedere? Ovviamente, come da titolo, in C.

    Grazie per l'attenzione, attendo risposte!

  2. #2
    Prepara un array di pid_t grande a sufficienza, fai tutte le fork che vuoi in un loop - uscendo dal loop se la fork restituisce 0, memorizzando il pid nell'array altrimenti - e alla fine del ciclo scegli un pid a caso tra quelli dell'array.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Originariamente inviato da MItaly
    Prepara un array di pid_t grande a sufficienza, fai tutte le fork che vuoi in un loop - uscendo dal loop se la fork restituisce 0, memorizzando il pid nell'array altrimenti - e alla fine del ciclo scegli un pid a caso tra quelli dell'array.
    Quindi diversamente da come credevo, creando un array e allocando i pid di ogni figlio creato e dopo scegliere il figlio casualmente... Ma come faccio appunto a scegliere e a far lavorare il figlio scelto? Intendo praticamente proprio... Lasciando perdere la random()... Ad esempio, ho generato 5 figli e voglio far lavorare il 3° figlio... Dopo aver allocato tutti i pid, come faccio dunque a "selezionarlo" e a farlo lavorare?

  4. #4
    Aspé, ma cosa intendi per "farlo lavorare"?
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Originariamente inviato da MItaly
    Aspé, ma cosa intendi per "farlo lavorare"?
    Scusa per il linguaggio "terra terra" ma mi è venuto spontaneo! Comunque intendo che, una volta scelto il figlio, quest'ultimo dovrà eseguire le successive istruzioni... Come quando invoco la Fork... Di norma una volta invocata la Fork, le successive istruzioni saranno eseguite dal figlio, a meno che non si decida di fermarlo generalmente con una condizione... Però qui il problema è diverso... Se devo fare un array di pid dovrò quindi richiamare n volte la Fork in un ciclo For... Una volta uscito, si decide il pid e si manda in esecuzione il figlio scelto... Ma non so come si fa a livello pratico, come si sceglie e come si fa a mandare successivamente in esecuzione il figlio scelto... Sti figli maledetti!

  6. #6
    Uhm ma che senso ha? E gli altri figli cosa dovrebbero fare allora?
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.