Aus einer Funktion gestartetes Programm mit dem Script beenden

FatManStanding

Lt. Junior Grade
Registriert
Aug. 2021
Beiträge
508
Hallo,

ich starte in einem Shell-Script 2 Funktionen die im Hintergrund laufen während das Script weiter läuft. Ich dachte wenn ich das Script beendet werden auch die Funktionen beendet. Dem scheint aber nicht immer so zu sein. In meinem Fall sieht das so aus:

Code:
function func1 {
 irgendwas_ohne_gui
}
func1 &

function func2 {
 geany
}
func2 &

more stuff

Ich sehe im Xfce-Taskmanager 3 Prozess mit dem Namen des Scripts, einmal das Script selbst und dann die beiden Funktionen, weiterhin den Editor Geany der aus der Funktion geöffnet wurde. Beendet ich das Script werden auch die beiden Funktionen beendet, nicht aber das aus der zweiten Funktion heraus gestartete Geany. Liegt das an dem & hinter dem Funktions-Start?
 
Weil die Funktionen durch & im Hintergrund laufen.
Ergänzung ()

Versuche damit

Code:
#!/bin/bash

# Set up a trap to handle script termination
trap 'kill $(jobs -p)' EXIT

function func1 {
 irgendwas_ohne_gui
}
func1 &

function func2 {
 geany
}
func2 &

wait
 
Zuletzt bearbeitet: (wait nachgetragen)
Donnerkind schrieb:
Du könntest dir die Prozess-ID der gestarteten Programme holen und die Programme am Skriptende abschießen:
Wenn man wie oben 2 Funktionen startet, dann müsste man das
Code:
launch process1 &
PROC_ID1=$!

launch process2 &
PROC_ID2=$!

while kill -0 "$PROC_ID1" >/dev/null 2>&1 || kill -0 "$PROC_ID2" >/dev/null 2>&1; do
    echo "Processes are running..."
    sleep 1
done

echo "All processes terminated."
exit 0
machen.
 
Zurück
Oben