Datei temporär schreibschützen?

Diskutiere Datei temporär schreibschützen? im Java/Mono/dotGNU Forum im Bereich Programmieren unter Linux/Unix; Hallo allemiteinander! Ich habe folgendes Problem: In meinem Javaprogramm lesen zwei Treads eine Datei aus, bearbeiten diese und schreiben...

  1. #1 BravoOne, 06.07.2004
    BravoOne

    BravoOne Grünschnabel

    Dabei seit:
    26.06.2004
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo allemiteinander!

    Ich habe folgendes Problem:

    In meinem Javaprogramm lesen zwei Treads eine Datei aus, bearbeiten diese und schreiben die dann wieder mit Hilfe eines FileWriters. Meine Frage: Besteht die Möglichkeit eine Datei zu "locken", also dafür zu sorgen, dass die Threads nur nacheinander die Datei lesen und anschliessend schrieben können? Ich kann dies leider nicht über eine synchronised-Methode erfolgen.

    Vielen Dank für eure Hilfe

    BravoOne
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 qmasterrr, 06.07.2004
    qmasterrr

    qmasterrr Foren Gott

    Dabei seit:
    01.01.2004
    Beiträge:
    2.735
    Zustimmungen:
    0
    Ort:
    Germany/NRW/Wesel
    was hälst du von einer Kontroll Variabel? Bevor du schreibst liest du die und wenn der wert 0 ist setzt du ihn auf 1 und fängst an zu schreiben wenn er schon eins ist dann warteste nen augenblick und lässt den dann nochmal checken, nach dem checken setzt du die wieder auf 0 ..
     
  4. #3 tsuribito, 06.07.2004
    tsuribito

    tsuribito Oberschüler

    Dabei seit:
    04.09.2003
    Beiträge:
    166
    Zustimmungen:
    0
    Ort:
    Duisburg
    Code:
    #include <stdio.h>
    #include <unistd.h>
    #include <fcntl.h>
    
    int main()
    {
      FILE *fp;
      int c;
      struct flock fl;
    
      fl.l_type = F_WRLCK;      /* Write locking on */
      fl.l_whence = SEEK_SET;
      fl.l_start = 0;
      fl.l_len = 0;
    
      fp = fopen("sequence", "r+");
    
      /* Waiting for a lock */
      fcntl(fileno(fp), F_SETLKW, &fl);
    
      fscanf(fp, "%d", &c);
    
      c++;
      printf("My no.: %d\n", c);
      usleep(1);
      /* Writing the new number to a file */
      rewind(fp);
      fprintf(fp, "%d\n", c);
    
      fl.l_type = F_UNLCK;      /* Locking off */
      fcntl(fileno(fp), F_SETLK, &fl);
    So hat Hackin9 das gelöst. Ist zwar die falsche Sprache, kannste aber bestimmt portieren ^^
     
  5. meez

    meez miis

    Dabei seit:
    27.04.2003
    Beiträge:
    46
    Zustimmungen:
    0
    Ort:
    CH
    Semaphore benutzen...
     
  6. Anzeige

    Vielleicht findest du in dieser Kategorie etwas passendes.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Datei temporär schreibschützen?

Die Seite wird geladen...

Datei temporär schreibschützen? - Ähnliche Themen

  1. temporäre Datei sortieren

    temporäre Datei sortieren: Hallo, ich habe eine Datei die in der vierten Spalte aufsteigend zu sortieren ist: M110 # (177,2,0) # 1.00 # 11.01.2012 14:48 #...
  2. Dateiinhalt verdoppeln

    Dateiinhalt verdoppeln: Hallo, ich möchte den Inhalt einer Datei verdoppeln, Kopf- und Endesatz ausgenommen. Danach muss im Endesatz die Datensatzanzahl angepasst werden...
  3. Dateien in Unix finden, die mehrere Strings beinhalten

    Dateien in Unix finden, die mehrere Strings beinhalten: Hallo liebe Leute, ich versuche über die Shell unter Unix alle Dateien ausfindig zu machen, die sowohl den SuchstringA als auch den SuchstringB...
  4. Textdatei filtern und löschen mit grep /sed

    Textdatei filtern und löschen mit grep /sed: Guten morgen liebe Forenmitglieder, da ich etliche Jahre in Sachen Linux pausiert habe und nun wegen beruflichem Wechsel wieder dort einsteige...
  5. Fragen zu stty, quotes und Datein (flush)

    Fragen zu stty, quotes und Datein (flush): Hi, ich schreibe seit ein paar Tagen ein Skript, dass über die Serielle Schnittstelle kommuniziert. Leider gibt es noch zwei Probleme, die ich...