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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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...
     
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. Debian erlaubt Booten vom F2FS-Dateisystem

    Debian erlaubt Booten vom F2FS-Dateisystem: Debian-Entwickler Roman Perier arbeitet an der Umsetzung der Unterstützung des Dateisystems F2FS in GRUB und Initramfs, um der Distribution das...
  3. Dateisystem Reiser5 soll Skalierbarkeit und Effizienz steigern

    Dateisystem Reiser5 soll Skalierbarkeit und Effizienz steigern: Reiser5 soll als Nachfolger des Dateisystems Reiser4 erhebliche Geschwindigkeitssteigerungen bringen. Möglich werden soll das durch die Nutzung...
  4. RHEL 8.0 Partitionsreihenfolge in der Kickstart-Datei festlegen

    RHEL 8.0 Partitionsreihenfolge in der Kickstart-Datei festlegen: Hallo zusammen, Aktuell habe ich die folgende Partitionierung im Kickstart File festgelegt: bootloader --location=mbr --boot-drive=sda ignoredisk...
  5. Spalten einer Datei in neue Datei integrieren.

    Spalten einer Datei in neue Datei integrieren.: Hallo ich habe folgendes Problem. Ich habe eine Datei mit ca. 39000 Zeilen und entsprechenden Infos. Nun möchte ich gerne von dieser Datei Die...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden