Akela: Dateilock prüfen

Beitrag lesen

Hallo Struppi,

ich habe es jetzt mit flock versucht. Scheint zu funktionieren.

Meinst du die Konstanten die werden in Fcntl defniert.

Die habe ich eingebunden.

Oder allgemein?
Dann kommst du auf dem Weg sowieso nicht weiter, da z.b. Win95 kein Dateilock kann.

Win95 -> wer benutzt denn sowas ;-)
Auf Windows NT und höher scheint das zu funktionieren. Ich gehe jetzt mal ganz naiv davon aus, daß dies unter UNIX/Linux sowieso funktioniert.

Die Frage wäre was du wirklich erreichen willst?

Mittlerweile bin ich nach einigen Tests gar nicht mehr so sicher ob mir ein Test auf Lock wirklich was bringt. Ich bin davon ausgegangen, daß bei einem Filecopy durch ein externes Programm, die Datei gelocked wird. Scheinbar ist das nicht der Fall, da ich ein im kopieren befindliches File sperren kann. Genau das will ich ja nicht.

Muß das Filehandle für flock readwrite geöffnet sein oder reichen hier Leserechte beim Öffnen?

Ich verwende jetzt folgenden Code.

 #-----------------------------------------------------------------------------  
sub lock_status  
#-----------------------------------------------------------------------------  
  {  
    my ( $filename ) = @_;  
    my $status = -1;  
  
      # Prüfen auf Existenz  
      if( !( -e $filename ) )  
        {  
          $status = 1;  
        }  
      # Prüfen auf lock  
      elsif( open( HNDfile, "+<$filename" )  )  
        {  
            # Datei test-locken  
            if( flock( HNDfile, LOCK_EX | LOCK_NB ) )  
              {  
                $status = 0;  
                flock( HNDfile, LOCK_UN );  
              }  
            else  
              {  
                $status = 3;  
              }  
          close( HNDfile );  
        }  
      else  
        {  
          $status = 2;  
        }  
    return( $status );  
  }  # lock_status()  

wenn ich beim Dateiöffnen aber statt +< ein < verwende erkennt die Funktion nicht, daß die Datei verwendet wird.

ciao Andreas