Forum: PC-Programmierung Restart linux screen application


von J. F. (Firma: Père Lachaise) (rect)


Lesenswert?

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.

von Hmmm (Gast)


Lesenswert?

Du schiesst dem Script das Controlling Terminal weg. Es kann reichen, 
SIGHUP abzufangen.

von J. F. (Firma: Père Lachaise) (rect)


Lesenswert?

Das dachte ich mir. Mit dem Schlagwort "Controlling Terminal" ist mir 
nun auch der Kontext klar.

HUP abfangen könnte ich, aber ich habe ja keine Applikation mehr am 
Laufen zu diesem Zeitpunkt. Anders gesagt: ich müßte also das Skript in 
einem anderen (eigenen?) Controlling Terminal aufführen, oder?

von Hmmm (Gast)


Lesenswert?

Zu Beginn des Scripts:

trap : 1

Ob das ausreicht oder am weiterhin sterbenden Parent Process scheitert, 
kann ich Dir aber nicht sagen.

von J. F. (Firma: Père Lachaise) (rect)


Lesenswert?

Danke für die Hinweise "Hmmm". Ich habe jetzt einfach das Skript selbst 
in einem Screen gestartet. Dieses wartet dort auf einen Rückgabewert der 
Applikation und startet dementsprechend diese einfach neu.

Ciao!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.