Hilfe mit Fork



  • Hallo, hat jemand eine Idee warum folgender Code Abschnitt nicht funktionieren könnte:

    ...
    
    void CallBackFuntction(Data* param)
    {
           static int shmID=shmget(IPC_PRIVATE, sizeof(Data), SHM_R | SHM_W);
           static Data* parsedData=(Data *)shmat(shmID,0,0);
           memcpy(parsedData, param,sizeof(Data));
           ...
           pid_t pid=fork();
           if (pid==0){
              parsedData->Timeout=50;
              exit();
           }
    }
    

    Eigentlich sollte mit shmget das attachete Speichersegment vererbt werden. So steht es zumindest in den Man-Pages. Jetzt scheint es allerdings so das dem nicht so ist, da der Timeout beim nächsten Callback Aufruf immer noch einen anderen Wert hat. Wenn ich das ganze in nen Main Funtkion schreibe dann funktioniert es, nur nicht in der Callback Funktion!?



  • Hab das Problem in den Griff bekommen. Man sollte halt im geshareten Objekt nicht mit new Speicher allokieren, der ist dann nämlich in einem nicht mehr geshareten Bereich und dupliziert sich mit fork gnadenlos


Anmelden zum Antworten