jetzt hab ich leider ein anderes - daraus resultirendes Problem.
$retval = fork();
if ($retval == -1) {
die "fork() failed: $!\n";
} elsif ($retval == 0) {
exec("$find / -type f > tmp.txt 2>&1") || die "Error\n";
} else {
while(!waitpid ($retval, WNOHANG)) {
if ( $percent_done == 150) { $percent_done=0 } else { $percent_done++; $toplw->update(); sleep 1; }
}
}
bei mir gings nur mit "exec", das Problem ist aber nur - wenn der Benutzer nun auf abbrechen klickt - dann tötet er zwar sich, aber nicht den "exec" Child - sprich: meine find suche läuft noch weiter.
Hab schon versucht die pid während des forks in eine Datei zu schreiben - diese beim Abbrechen Button auszulesen und die darin enthaltene PID zu töten. Funktioniert auch - aber zwischendurch stand da mal "0" drinnen - und den möchte ich nicht killen ;)
Daher: gibt es eine einfach möglichkeit, um so einen "exec" Prozess wieder zu töten?
Gruss,
quetzal