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

    [c] fork e vettori di pid

    Ho un problemino, come da oggetto su un vettore...

    Io eseguo una creazione di processi con una fork annidata. Di questi processi mi interessa salvare il pid in un vettore per potergli poi mandare segnali successivamente.

    Ogni volta che creo un processo, con un classico:

    codice:
    pids[i]=getpid();
    printf("%d\n",pids[i]);
    lo inserisco nel vettore, e me lo guardo con la printf....

    il problema sorge quando, tornato nel main, mi ritrovo un vettore pieno di 0.

    Ho provato a dichiararlo globale e locale, a passarloa lla funzione come parametro e a non passarlo....non so più dove sbattere la testa, non ha molto senso che perda informazioni già memorizzate....

    come faccio ad avere una variabile che rimanga modificata sempre???


    grazie in anticipo...

  2. #2
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    se hai studiato come funziona la fork() dovresti capire perchè non funziona...

    Processi creati con una fork condividono solo il codice e i file aperti prima della fork. Non vi sono aree di memoria comuni. Quindi anche se il tuo vettore di pid ha formalmente lo stesso nome, a tutti gli effetti è una variabile diversa in ogni processo...

    L'unico modo per memorizzare i pid nel vettore è non annidare le fork ma far creare tutti i processi ad uno stesso padre, il quale sarà l'unico a gestire l'array di pid.
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

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.