PROZESS FRAGE



  • Hallo liebe Leute
    Ich hätte mal ne Frage wie man ein bestimmtes Problem lösen könnte und zwar dieses:
    Ich habe mehere Prozesse die auf verschiedene Weise auf einen anderen Prozess zugreifen sollen um dort was in Stack zu pushen. Ich habe folgendes Problem wie kriege ich die Prozesse syncronisiert, und wie kann ich auf den Stack zugreifen.



  • GAR NICHT, DENN DER SPEICHER WIRD VOM KERNEL VERWALTET UND DA KANNST DU NICHT [OHNE WAS KAUPUTT ZU MACHEN] RUMPFUSCHEN! VERWENDE DOCH SHARED MEMORY.



  • Wie schon von @linuxfreak richtig erwähnt, sind Shared Memories das geeignete Mittel, um Daten direkt zwischen Prozessen auszutauschen. Wenn die Gefahr besteht, dass man die Zugriffe auf gemeinsame Speicherbereiche synchronisieren muss (was nicht immer zwangsläufig der Fall ist), so macht man dies über Semaphoren.

    Man kann mittels Semaphoren entweder den kompletten shared-memory Speicherbereich synchronisieren oder aber auch den Speicher aufteilen und einzelne Speicherbereiche über einzelne separate Semaphoren absichern.

    Natürlich kann man zwischen den Prozessen auch ohne shared memories Daten austauschen. Das geht dann z.B. über socket-Verbindungen zwischen den einzelnen Prozessen (dann braucht man keine Semaphoren).



  • du kannst auch pfeifen nehmen 😉

    named pipes auch FIFO genannt.

    man 4 fifo
    man 3 mkfifo
    man 7 pipe



  • atomfish schrieb:

    du kannst auch pfeifen nehmen 😉

    named pipes auch FIFO genannt.

    ... und es gehen auch unnamed pipes (finde ich persönlich schöner und flexibler als named pipes). Siehe hierzu pipe(2). Der Vater/Parent-Prozess erzeugt eine pipe pro Kind/Child-Prozess und vererbt diese beim fork(). Er selbst schließt seinen Schreibkanal, der Child-Prozess schließt den Lesekanal. Dann gibt es eine Schreib-Lese-Verbindung vom Child zum Parent. Will man auch noch eine Rückrichtung haben, so benutzt man hierfür eine zweite Pipe.

    ... wie der geneigte Leser unschwer erkennen kann, ist eine solche Programmierung nicht ganz einfach. Anfänger sollten sich einfach merken, dass da noch etwas anderes geht ...


Log in to reply