Temporaere Dateien loeschen bei CTRL+C

chadha

Grünschnabel
Hallo alle zusammen,

Ich habe das folgende Problem
Ich habe ein Perl Programm (GUI) geschrieben und bei dem Aufruf werden viele tempoarere Dateien erzeugt.
Das Programm verwendet diese Dateien bis zum Ende d.h sie werden geloescht nur wenn man auf EXIT (an der graphischen Oberflaeche ) clickt.
Das Problem ist dass wenn das Programm laeuft und der User CTRL+C macht , dann bleiben dir temporaeren dateien im aufrufverzeichnis

Hilfe bitte
 
Spontan fällt mir ein:

- Ctrl-C unterdrücken (wenn möglich, so dicke bin ich in der GUI-Programmierung von Perl auch nicht drin).
- Cronjob einrichten, der die Existenz der temporären Dateien prüft und bei Finden der Dateien diese löscht (fände ich aber eher unschön).
- Bei Starten des Programmes (also nicht nur beim Exit) eventuell bereits vorhandene temporäre Dateien löschen, evtl. auch mit Abgleich ihres Erstellungsdatums.

Letzteres ist auch die Vorgehensweise, die ich hier verwende, da z.B. ein Stromausfall unter Windows (was imho durchaus mit einem Ctrl-C unter Linux vergleichbar ist) nie ganz ausgeschlossen werden kann. Wichtig ist für mich dabei nur, daß das Programm in einem definierten und sicheren Zustand wieder aufgenommen werden kann.

Also wenn es sich nicht um Temporärdaten in Gigabyte-Größe handelt, deren Existenz wirklich den Plattenplatz signifikant einschränkt, dann würde ich sie in der Programminitialisierung lokalisieren, auswerten und ggf. löschen und dann erst das Programm selbst laufen lassen.
 
Du könntest mit Signalhandlern arbeiten:

Code:
#!/usr/bin/perl

use strict;
use warnings;

$SIG{INT} = \&silent_dead;

sleep 2;

sub silent_dead{
    print "Abbruch!!\n";
    exit;
}
 
Zurück