Serialisierung bei mehreren parallel laufenden Programmen?



  • Hallo zusammmen,

    wenn ich in einem Programm Daten in eine Datei schreibe, also einfach mit fopen(), fprintf(), fclose(), das Programm aber mehrfach gleichzeitig ausgeführt werden kann, muss ich dann selbst dafür sorgen, dass die Daten beim schreiben nicht zerissen werden? Also, z.B. indem ich die Funktion, die die Daten schreibt mit einem Mutex verriegle?



  • Soll nur ein Programm Zugriff haben, kann die Datei vom Programm gesperrt werden, alle anderen Programme müssen auf die Freigabe warten.

    Sollen mehrere Threads/Programme Zugriff haben, muss eventuell synchronisiert werden (Mutex/Semaphore).

    Dafür sorgt, wie du schon geschrieben hast, der Programmierer.



  • aber wie kann das gehen? Ich meine bei mehreren Threads teilen die sich die Betriebsmittel, aber Programme ja nicht.

    Heißt das, ich müsste eine entsprechende "Ausgabe-Funktion" als Bibliothek auslagern, oder wie kann das gehen?



  • Dieser Thread wurde von Moderator/in Nobuo T aus dem Forum ANSI C in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Der Ansatz, die Datei kurz fuer Aenderungen zu oeffnen und dann wieder zu schliessen, sollte klappen. Jedes brauchbare Multitasking-System bietet eine Moeglichkeit, Dateien exklusiv zu oeffnen: Wenn einmal von einer Instanz geoeffnet, werden dann weitere fopens fehlschlagen. Das sollte zur Synchronisierung unter den Programmen eigentlich reichen, vorausgesetzt, die Dateizugriffe dauern jeweils nur kurz und sind nicht irgendwie Zeitkritisch oder erfordern die Einhaltung einer bestimmten Zugriffsreihenfolge der Programminstanzen o.Ae...



  • Dafür gibt es doch unter POSIX-Systemen flock().


Anmelden zum Antworten