Pitt: flock

hi,

kann mir einer erklären warum manche scripte, in denen die dateien mit flock für einen anderen zugriff zur gleichen zeit abgesichert sind, warum diese datein dann auch wieder entsperrt werden.

in manchen scripten ist die ensperrung dirn und in anderen script wieder nicht. macht das ein unterschied, ob man nur den flock-LOCK_EX-befehl eingibt, oder sollte man den schutz auch wieder mit LOCK_UN ensperren.

kann es sein das wenn man den LOCK_UN, also die entsperrung, nicht eingibt, dass die datei erst nach vollständigem ablauf des progarmmes wieder beschrieben werden darf? und wenn man den schutz aufhebt, dass ein anderer user gleich nach der aufhebung der sperre in die datei schreiben darf, ohne das das prog ganz abgelaufen ist?

danke im voraus

  1. Hallo,

    in manchen scripten ist die ensperrung dirn und in anderen script wieder nicht. macht das ein unterschied, ob man nur den flock-LOCK_EX-befehl eingibt, oder sollte man den schutz auch wieder mit LOCK_UN ensperren.

    Wenn du einen Lock erhalten hast, dann bleibt dieser solange bestehen, bis

    a) du ihn über LOCK_UN wieder aufhebst
    b) die geöffnete Datei in deinem Programm geschlossen wird
    c) dein Programm beendet wurde

    Du kannst den Schutz in deinem Programm also selbst wieder über a) oder b) aufheben, aber spätestens bei c) ist die Datei wieder freigegeben.

    Viele Grüße,

    Stefan

    --
    Lass dir das Tanzen NICHT verbieten
    http://tanzverbot.de
    1. vielen dank

    2. Moin.

      a) du ihn über LOCK_UN wieder aufhebst

      Aber bedenke, daß diese Version das Risiko eines Datenverlustes in sich birgt: Zwischen unlock und close könnte ein anderer Prozess auf die Datei zugreifen, z.B. schreiben. Wenn dann "Dein" close kommt, werden die Daten des anderen Prozesses überschrieben. Also Vorsicht damit!

      Gruß Frank

      1. Hallo,

        a) du ihn über LOCK_UN wieder aufhebst
        Aber bedenke, daß diese Version das Risiko eines Datenverlustes in sich birgt: Zwischen unlock und close könnte ein anderer Prozess auf die Datei zugreifen, z.B. schreiben. Wenn dann "Dein" close kommt, werden die Daten des anderen Prozesses überschrieben.

        Wenn man $io->flush aus IO::Handle ausführt, bevor man den Schutz über LOCK_UN wieder aufhebt sollte das helfen.
        Aber mir fällt gerade keine Situation ein, in der es Sinn voll wäre die nicht gelockte Datei weiter geöffnet zu halten.

        Viele Grüße,

        Stefan

        --
        Lass dir das Tanzen NICHT verbieten
        http://tanzverbot.de