Frage zur Prozessbehandlung



  • Kurze Erklärung:
    Ich schreibe zur Zeit ein Programm unter Linux, das im Hintergrund ein 'listen()' auf ein Socket durchführt. Andere Anwendungen können über dem Socket dem Hintergrundprogramm Anweisungen erteilen.
    Tritt dies ein, erzeugt das Hintergrundprogramm einen Kindprozess, welches die Anweisung abarbeitet und danach beendet wird. Der Vaterprozess wartet indes auf weitere Anweisungen. Jede weitere Anweisung erzeugt einen neuen Kindprozess, die durchaus parallel ablaufen können.

    Mein Anliegen:
    Um zu verhindern, das Kindprozesse die gleiche Aufgabe parallel erledigen, versuche ich eine Möglichkeit zu finden, dies zu verhindern. Das heißt, während ein Prozess eine bestimmte Aufgabe erledigt, sollen andere Prozesse davon abgehalten werden, die selbe Aufgabe zu erledigen und in eine Art Warteschlange geschickt werden.
    Ich habe mich mal mit Semaphoren auseinander gesetzt, weiß aber nicht, ob das der richtige Weg ist. Vielleicht könnt Ihr mir ein paar Tipps geben und mich in die richtige Richtung schubsen.:-)

    FDK!



  • jo, Sempahoren sind der richtige Weg. Du erstellst einfach für jede Aufgabe eine Semaphore und sperrst die dann entsprechend. Der nächste Prozess sieht das dann, wenn er versucht die Semaphore zu sperren und kann ja nen Fehler ausgeben oder warten.

    siehe semget(2), semctl(2), semop(2), ipc(5) und/oder http://www.ecst.csuchico.edu/~beej/guide/ipc/



  • Danke für den Hinweis, da war ich doch schon auf dem richtigen Weg.

    FDK!


Anmelden zum Antworten