Child-Prozess stört Parent

Servus,

ich teste hier ein kleines Programm qiv (Quick image viewer), einen sehr schlanken und entspr. flotten Bildbetrachter, welcher aus der Kommandozeile gestartet und über die Tastatur (u. a.) gesteuert wird.

Dieser Betrachter bietet eine Funktion, bestimmte Tasten mit frei definierbaren externen Kommandos zu belegen. Z. B. habe ich definiert, das ein Druck auf die Taste ‚0‘ das gerade geöffnete Bild auch im feh öffnet.

Die Definition der Tastenbelegungen geschieht in einem Shell-Script, qiv-command, welches irgendwo im Pfad liegen muss und von qiv aufgerufen wird. Dieses Script ist sehr einfach aufgebaut:

#! /bin/sh

case "$1" in

 0)
 feh "$2" &
 ;;

 1)
 echo -ne "1 was pushed.\nStart your own programs by editing the\n\"$0\" file!";
 ;;

_[...weitere Tastendefinitionen...]_
 \*)
 echo "Usage: $0 [0-9]"
 exit 1
esac

exit 0

Nach meinem Verständnis wird feh durch die folgende Angabe des & vom Mutterprozess gelöst, das aufrufende Script beendet sich und gibt die Kontrolle an qiv zurück.

Damit sollte qiv in der Lage sein, beliebige weitere Tastendrücke abzuarbeiten. Z. B. müsste es möglich sein, ins nächste Bild zu wechseln, und dieses ebenfalls an feh zu übergeben.

Tatsächlich aber passiert das nicht. qiv nimmt zwar weiter Tastendrücke entgegen, arbeitet diese aber nicht ab. Erst wenn ich den vorher aufgerufenen feh wieder schliesse, werden sie sukzessive abgearbeitet.

Weiss jemand, wodurch dieses seltsame Verhalten ausgelöst werden könnte oder alternativ, wo ich den entscheidenden Denkfehler mache?

Gruß

Hallo

Nach meinem Verständnis wird feh durch die folgende Angabe des
& vom Mutterprozess gelöst, das aufrufende Script beendet sich
und gibt die Kontrolle an qiv zurück.

& schiebt einen Prozess in den Hintergrund, dadurch kann das Shellscript weiter ausgeführt werden und muss nicht auf das Ende des Prozesses warten. Zum Lösen vom Mutterprozess gibt es den Befehl nohup. Versuch also mal

nohup feh &

Gruß Johannes

Zum Lösen vom Mutterprozess gibt es
den Befehl nohup. Versuch also mal

nohup feh &

Hallo Johannes,

Vielen Dank für die Rückmeldung. Leider ändert der Aufruf mittels nohup auch nichts an dem seltsamen Verhalten.

Wenn ich mir den Prozess-Baum anzeigen lasse, werden die Prozesse auch in unabhängigen Zweigen angezeigt. Selbst wenn ich einen Zwischenschritt einfüge, in einen neuen Prozess forke und erst den Fork den feh aufrufen lasse, ändert sich nichts.

Gruß