Forum: PC-Programmierung Konsolenfenster anpassen, Programme ausführen unter Linux


von Thomas P. (tommy2002)


Lesenswert?

Hallo,
ich habe ein paar Fragen, diesbezüglich schildere ich euch erst mal was 
ich vor habe.

ich möchte mit einem Raspberry PI ein paar Sensordaten einlesen und 
ausgeben. Hierfür habe ich Peripherie über I2C angeschlossen. Dazu habe 
ich ein Programm in C++ geschrieben.
Nachdem ich alles compiled habe, kann ich das Programm folglich mit 
./meinprogramm starten.

Da ich via SSH auf dem RPI bin, möchte ich mir die Daten in der Konsole 
anzeigen lassen. Momentan läuft da eine Endlosschleife die mir einfach 
die Daten in folgender Form anzeigt:

*************
MEINE DATEN
*************

*************
MEINE DATEN
*************

*************
MEINE DATEN
*************

Natürlich ist dies nicht an jedes Konsolenfester angepasst. Gibt es eine 
elegantere Methode dies zu lösen?
Wenn ich z.B. "top" ausführe, also mir die tasks anzeigen lasse, dann 
passt sich die Anzeige dem Konsolenfenster an. Dies wäre für meinen Fall 
wünschenswert.


Meine zweite Frage wäre noch: Wie kann ich ein Programm ausführen, 
sodass es nicht geschlossen wird wenn ich die SSH-Verbindung 
unterbreche?


Ich hoffe mir kann hier jemand helfen.

Grüße
Thomas

von Rolf Magnus (Gast)


Lesenswert?

Thomas P. schrieb:
> Wenn ich z.B. "top" ausführe, also mir die tasks anzeigen lasse, dann
> passt sich die Anzeige dem Konsolenfenster an. Dies wäre für meinen Fall
> wünschenswert.

Schau dir mal ncurses an. Damit kannst du sowas machen, und noch einiges 
mehr.

Thomas P. schrieb:
> Meine zweite Frage wäre noch: Wie kann ich ein Programm ausführen,
> sodass es nicht geschlossen wird wenn ich die SSH-Verbindung
> unterbreche?

Führe es in nohup aus oder, wenn du dich später wieder damit verbinden 
können willst, mit screen.

von screen (Gast)


Lesenswert?

Meine zweite Frage wäre noch: Wie kann ich ein Programm ausführen,
sodass es nicht geschlossen wird wenn ich die SSH-Verbindung
unterbreche?

Gnu screen oder tmux sind hier die Lösung

von Christian B. (casandro)


Lesenswert?

Geht übrigens noch einfacher. Einfach das Programm ohne Endlosschleife 
schreiben, so dass es nur einmal die Werte ausgibt. Dann über das 
Programm "watch" aufrufen. Damit wird es dann alle n-Sekunden ausgeführt 
und die Ausgabe auf dem Bildschirm ausgegeben. Das kümmert sich sogar um 
die Bildschirmgröße usw.

Der Vorteil wenn Du das nur einmal ausgibst ist übrigens, dass später 
mal jemand anderes Dein Programm für andere Zwecke weiterverwenden kann.

von Thomas P. (tommy2002)


Lesenswert?

Wow!
Das waren mal schnelle Antworten. Das klingt alles ziemlich gut. Ich 
werde mich mal damit beschäftigen. Danke!

von Kaj (Gast)


Lesenswert?

Thomas P. schrieb:
> Meine zweite Frage wäre noch: Wie kann ich ein Programm ausführen,
> sodass es nicht geschlossen wird wenn ich die SSH-Verbindung
> unterbreche?
Entweder über systemd beim booten starten lassen, oder einfach unter 
tmux/screen starten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ohne auf Ncurses o.ä. zurückzugreifen könnte man auch Ctrl+L ausgeben. 
Mit recht hoher Wahrscheinlichkeit löscht das den Bildschirm ...

von Thomas P. (tommy2002)


Lesenswert?

Habe es nun mit Cron und Screen sauber zum laufen bekommen.

Vielen Dank nochmal!

Grüße
Thomas

von root (Gast)


Lesenswert?

nohup

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.