Ich möchte gerne ein C-Programm, welches innerhalb eines screen läuft,
neu starten. Gestarten wurde das Programm mit
1 | screen -dmS name location
|
Schreibe ich mir nun ein Bash-Script und führe gleiches aus funktioniert
es wie erwartet:
1 | #/bin/bash
|
2 |
|
3 | echo "------------------------------"
|
4 | if screen -list | grep -q -w "$1"; then
|
5 | echo "Restarting "$1" ..." >> output
|
6 | screen -X -S $1 quit;
|
7 | echo "Sleeping ..." >> output
|
8 | sleep 1;
|
9 | echo "Reattaching ..." >> output
|
10 | screen -dmS $1 $2;
|
11 | else
|
12 | echo "No screen "$1" found!" >> output
|
13 | fi
|
Starte ich dieses Skript allerdings aus dem C-Programm selbst mit einem
system call, ist nach der Zeile "Sleeping ..." Schluß. Was passiert
hier? Wird die Skriptabarbeitung mit dem Beenden des Programmes auch
beendet? Oder fehlen dem Programm schlichtweg die Rechte (die ich
allerdings gesetzt habe)? Das Skript aus einer anderen Applikation
aufzurufen (die erst von der eigentlichen Applikation aufgerufen wird)
funktioniert auch nicht.