Moin.
Das Problem hier ist das Firefox zwar aufgeht, das Script aber solange stehen bleibt bis ich Firefox wieder abschiesse.
Warum das so ist, hat Struppi schon geschrieben. Du könntest das Problem auf 2 Wegen lösen: Benutze Threads oder Prozesse (fork). Dazu hier ein Beispiel. Es wird ein Child erzeugt, Parent und Child warten eine zufällige Zeit, wer zuerst fertig ist, killt den anderen.
#!/usr/bin/perl -w
use strict;
eigene ID merken
my $ParentId = $$;
my $timeout_parent = int(rand(9) + 1);
my $timeout_child = int(rand(9) + 1);
Prozess für Timer erzeugen
my $ChildId = fork();
die "fork: $!" unless defined $ChildId;
if ($ChildId) {
# Elternprozess
print "Elternprozess gestartet, Laufzeit $timeout_parent Sekunden \n";
sleep ($timeout_parent);
print "Timeout, Kindprozess killen!\n";
# KindProzess killen
kill("KILL",$ChildId);
}else{
# Kindprozess
print "Kindprozess gestartet, Laufzeit $timeout_child Sekunden \n";
sleep ($timeout_child);
print "Timeout, Elternprozess killen!\n";
# Elternprozess killen
kill("KILL",$ParentId);
}
exit;
Im Elternprozess startest Du den Firefox, im Kindprozess wartest Du, machst Dein Screenshot, killst den Elternprozess und beendest dich. Da Firefox ein Kind vom Elternprozess ist, wird er beim Killen des Prozesses mit entsorgt.
Gruß Frank