Thread open-Anweisung
(22 answers)
Opened by geloescht at 2012-06-24 00:30 2012-06-24T19:28:20 ? Es ist immer sinnvoll, das Ergebnis eines open()-Aufrufs zu verwerten. Was man im Fehlerfall macht, ist einem aber selbst überlassen. Oft ist ein gescheitertes open() so gravierend, dass die Fortsetzung des Programms nicht sinnvoll ist. Deshalb ist der "Standard-Reflex" beim Scheitern ein die(). Du kannst aber auch z.B. mehrere Versuche zulassen, oder mit warn() nur warnen (statt töten). Hier mal ein Beispiel (zur Verdeutlichung, nicht unbedingt als produktiver Code) Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 my $success = 0; my $tries = 0; while ($success = open(FILECOUNTER, "+<coresys/counter.csv")) { last if $success # open hat funktioniert or ++$tries > 5; # mehr als 5 Versuche sleep(1); # warte etwas } if ($success) { flock(FILECOUNTER, LOCK_EX); my $oldcounter = <FILECOUNTER>; my $newcounter = $oldcounter+1; # etc. } else { # gib eine Warnung aus, oder mach was anderes } edit Wie rosti gerade richtig schreibt, solltest Du natürlich auch die Rückgabewerte von flock() und close() verwerten Last edited: 2012-06-24 21:59:20 +0200 (CEST) Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
|