Thread Starten von Programmen nach Erstellung eines Files (14 answers)
Opened by giordani at 2010-07-07 11:12

Linuxer
 2010-07-07 20:30
#139657 #139657
User since
2006-01-27
3882 Artikel
HausmeisterIn

user image
Hi,

verdeutliche Dir doch mal den Ablauf in Deinem zweiten Schnipsel:

Du startest Deine "createCount.pl", die stumpf den Inhalt des Ordners löschen soll (mögen keine Verzeichnisse darin liegen...), und dann darin neue Dateien anlegen soll. Ich sehe da nichts, was im Hintergrund ablaufen würde.

"createCount.pl" ist irgendwann mit seinem Job fertig, die Dateien sind (hoffentlich erstellt) und system() liefert einen entsprechenden Returncode zurück (den Du ignorierst).

Dann startet Deine until() Schleife, die solange ausgeführt werden soll, bis die gewünschte Datei existiert.
Das tut sie jetzt bereits schon, also wird die Schleife nicht ausgeführt und Deine Ausgabe erfolgt nicht.

Der Code funktioniert diesbezüglich korrekt.

Aber sonstige Anmerkungen:

  • erster Schnipsel:
    • Dein opendir()-Aufruf ist unglücklich; Wenn Du '||' verwenden willst, klammere bitte die Argumente des opendir() oder lass die Klammern weg und verwende 'or' anstatt '||'.
    • unlink() ist ein Systemaufruf, der - wie opendir - auf Erfolg geprüft werden sollte.
    • unlink() sollte nicht dazu benutzt werden, Verzeichnisse zu löschen. Dies ignorierst Du vollkommen.
    • Bilde logische Gruppen; Warum erstellst Du ganz am Anfang eine Verzeichnis-Handle, wenn Du ihn erst am Ende brauchst?
  • zweiter Schnipsel:
    • system() stellt ebenfalls einen Systemaufruf dar, der auf Erfolg geprüft werden sollte (Beispiel siehe meinen vorigen Beitrag).
    • Sollte Dein "createCount.pl" einmal keine Datei "test2.txt" angelegt haben, hast Du eine Endlos-Schleife, die so oft es eben geht kontrolliert, ob die Datei existiert ... Ohne Abbruchbedingung.
    • Besser wäre ein Fehler-Handling in "createCount.pl"; wenn die relevante(n) Dateie(n) nicht angelegt werden konnten, stirbt das Skript. Das zweite Skript sollte den Returncode des ersten Skriptes überprüfen und dementsprechend handeln. (d.h. Returncode != 0 => FEHLER, Returncode == 0 => OK, weitermachen).
  • beide Schnipsel:
    * keine Verwendung von use strict; und use warnings; -> schlechter Stil (IMHO)
    * Wofür habe ich in meinem vorigen Beispiel wohl catfile aus File::Spec::Functions benutzt? Damit es ignoriert wird?


Wiki:UseStrict
Wiki:WasIsteinLexikalischerFileHandle
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Starten von Programmen nach Erstellung eines Files