Thomas: flock() Fehlerausgabe "Bad file descriptor" ! Was kann dies bedeuten?

Hallo zusammen,

eigentlich beschreibt das Thema bereits meine Schwierigkeit, aber noch einmal ausformuliert:

Ich habe ein Problem mit flock(). Beim Versuch ein zu sendende Maildatei zu "flocken" enthält $!="Bad file descriptor". Was bedeutet das genau? Und wie könnte ich das verhindern?

Ich hoffe es reicht, denn ansonsten scheint das Script zu funktionieren. Vielen Dank schon mal.

Bye

Thomas

  1. Hallo Thomas,

    Ich hoffe es reicht, denn ansonsten scheint das Script zu funktionieren. Vielen Dank schon mal.

    Mir zumindest nicht ;-) Ich würde mich freuen, wenn Du das entsprechende Stück Code posten könntest *g*

    Gruß AlexBausW

    Please visit my SELFvisitingcard @ http://www.atomic-eggs.com/selfspezial/daten/150.html

  2. Sorry, stimmt schon, ist dann besser zu erklären.

    $file = $base_path . $file;
    open(FILE,"$file") or Error('Datei Zugriffs Fehler',"Open-Fehler $msg ($file): $!");
    flock(FILE,2) or Error('Datei Sperr Fehler',"Sperr-Fehler $msg ($file): $!.");
    print FILE @_;
    close(FILE) or Error('Datei schliessen Fehler',"Schliess-Fehler $msg ($file): $!.");

    Beim Ablauf ergibt die Fehlerausgabe dann "Sperr-Fehler $file: Bad file descriptor".

    Datei ist eindeutig vorhanden und hat chmod 644.

    Kann Dir das helfen Alex?

    Danke

    Thomas

    1. Hallo Thomas,

      [...]

      flock(FILE,2) or Error('Datei Sperr Fehler',"Sperr-Fehler $msg ($file): $!.");

      [...]

      Beim Ablauf ergibt die Fehlerausgabe dann "Sperr-Fehler $file: Bad file descriptor".

      Es gibt einen spezielles literales Token namens __FILE__, welches den aktuellen Dateinamen enthält (Falls Dein Editor Syntaxhighlighting für Perl beherrscht gib das einfach mal ein). So korrespondiert zB. __DATA__ mit dem Filehandle DATA und bezieht sich auf Daten die nach __END__ im Skript auftauchen. Ich vermute das FILE als Dateihandle etwas ungünstig ist ;-). Vergib mal einen anderen Bezeichner für Dein Dateihandle. Imho sollte es dann funktionieren, wenn ich nicht noch was anderes übersehen habe ;-).

      Gruß AlexBausW

      Please visit my SELFvisitingcard @ http://www.atomic-eggs.com/selfspezial/daten/150.html

      1. Hallo Alex,

        ich habe alles in DATEI umbenannt, aber es bleibt bei der Fehlermeldung!! Noch eine Idee??

        Danke

        Thomas

        1. Hallo Thomas,

          ich habe alles in DATEI umbenannt, aber es bleibt bei der Fehlermeldung!! Noch eine Idee??

          Leider im Moment nicht. Aber da Du sicherlich "use strict;" eingebaut hast, und $^W = 1; von Dir gesetzt wurde (*gehichmalvonaus*g*) gibt es vielleicht noch weitere, vorher angesiedelte Fehlermeldungen, die nicht zu einem "Absturz" führen?

          Gruß AlexBausW

          Please visit my SELFvisitingcard @ http://www.atomic-eggs.com/selfspezial/daten/150.html

          1. Hallo Thomas,

            Doch noch was. Vielleicht liegt es an der Implementierung von flock(). Schreib Dir einfach mal ein kleines Testskript mit Dateieinlesen und flock(DATEI,2) or die $!; Wenns das auch nicht tut, dann muss wohl ein Eggsbädde ran ;-)

            Gruß AlexBausW

            1. Danke Dir,

              in anderen Scripten scheint es tadellos zu funktionieren. Deshalb bin ich ja so ratlos ;-(( !! Naja mal schauen, wie ich weiter mache. Vielen Dank an Dich.

              Bis dann

              Thomas