Fork und gemeinsame Speichernutzung?



  • Hallo Ihr.
    In meinem C-Programm unter Linux mache ich z.B. fork() um ein Kindprozess zu erzeugen. Nun möchte ich beim Kindprozess und Elternprozess gemeinsame Variablen also gemeinsamen Speicher haben.
    Am liebsten wäre mir, dass der Kinprozess auf meineVar zugreifen kann und der Elternprozess aber ganz genauso.
    Geht das? Kann Kindprozess automatisch auf die Variablen vom Elternprozess zugreifen? Nein? Wie kann ich das realisieren? Was muss ich dabei beachten?
    Wäre hier für Tipps sehr, sehr dankbar.

    Chris



  • Der Speicher wird kopiert. Sprich wenn du im Child eine Variable änderst, änderst du nichts im Parent.

    Wenn du so etwas machen willst, kannst du einerseits Shared-Memory benutzen oder Threads.



  • Okay von SharedMemory habe ich schon gehört und schon ein wenig damit gearbeitet.
    Muss ich bei SharedMemory darauf achten, wann welcher Prozess (Child oder Parent) darauf zugreift? Kann es da Probleme geben?

    Zu Threads: Mit Threads habe ich unter Linux noch nie gearbeitet. Es gibt also noch andere Prozesse als die die mit fork() gemacht werden? Threads sind dann richtige Unterprozesse die im selben Programm ablaufen oder?



  • wie wäre es mit der benutzung von threads ?



  • ChrisK schrieb:

    Okay von SharedMemory habe ich schon gehört und schon ein wenig damit gearbeitet.
    Muss ich bei SharedMemory darauf achten, wann welcher Prozess (Child oder Parent) darauf zugreift? Kann es da Probleme geben?

    Ja, du musst den SharedMemory synchronisieren, da es sonst zu Race-Conditions kommen kann

    Zu Threads: Mit Threads habe ich unter Linux noch nie gearbeitet. Es gibt also noch andere Prozesse als die die mit fork() gemacht werden? Threads sind dann richtige Unterprozesse die im selben Programm ablaufen oder?

    Ja, Threads sind "lightweight Prozesse", quasi ein Prozess im Prozess.


Anmelden zum Antworten