Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [C++] Permanent laufendes Linux-Programm (https://www.delphipraxis.net/113306-%5Bc-%5D-permanent-laufendes-linux-programm.html)

cruso 5. Mai 2008 22:44


[C++] Permanent laufendes Linux-Programm
 
Hi,

ich möchte mit C++ einen kleinen Bot schreiben, der das WWW nach bestimmten Kriterien durchsucht. Wie ich das mache ist mir klar. Nur habe ich noch nie unter Linux programmiert. Da auf dem Server allerdings Linux läuft nun meine eigentliche Frage: Wie muss ich das C++-Programm schreiben, dass ich es während einer SSH-Sitzung starten kann und es nicht beendet wird nachdem ich mich auslogge... es soll permantent weiterlaufen?


MfG
Cruso

Torpedo 5. Mai 2008 23:16

Re: [C++] Permanent laufendes Linux-Programm
 
Das ist wohl am einfachsten: http://de.gentoo-wiki.com/Screen_Tutorial
Damit kann man auch "Konsolen" öffnen, in denen du das Programm starten kannst, die auch offen bleiben, wenn man sich schon wieder ausgeloggt hat.

Sonst wären da noch Dämonen, aber das ist eher kompliziert. Ein Dämon ist das was unter Windows ein Dienst ist. Dämonen haben aber keine Shell zur Verfügung.

cruso 6. Mai 2008 16:34

Re: [C++] Permanent laufendes Linux-Programm
 
Gut, danke! Das hilft mir schon mal weiter. Aber gibt es noch andere Dinge, die beachtet werden sollten? Oder kann ich eine ganz normale C++-Konsolenanwendung schreiben und den Plattformunabhängigen Code dann unter Linux kompilieren?

Valle 6. Mai 2008 17:24

Re: [C++] Permanent laufendes Linux-Programm
 
Also ich mache das ohne screen ganz einfach mit folgendem Code.

Code:
nohup /usr/bin/meinprogramm >/dev/null
das Programm "nohup" sorgt dafür, dass das Programm auch noch läuft, wenn du dein SSH Fenster schließt. Die Ausgabeweiterleitung ">/dev/null" sorgt dafür, dass deine Ausgaben des Programms nicht in eine Datei gespeichert werden, sondern einfach verworfen werden. Normal speichert "nohup" nämlich die Ausgaben des Programms in eine Datei namens nohup.out. Die wird mit der Zeit dann aber ziemlich groß.

Was du beachten musst kann ich die nicht so genau sagen, in C++ schonmal garnicht, denn ich kann kein C++. Ich habe allerdings auf beiden Betriebssystemen Python programmiert. Mein zugegenermaßen etwas dämlicher Ansatz: Wenn du es von Betriebssystem $x auf $y portieren willst, dann versuch es erstmal ohne Änderung zu kompillieren. Vielleicht geht es ja. (Eher nicht *g*) Ansonsten gibt der Compiler schon entsprechende Meldungen aus. Wenn er etwas sagt wie "Function not found: exitWindowsEx()", dann wird das wohl heissen, dass Linux diese Funktion nicht hat. Dann muss man halt eine andere suchen. ;-)

Probier's einfach aus. :mrgreen:

Mit freundlichen Grüßen,

Valle

cruso 6. Mai 2008 20:14

Re: [C++] Permanent laufendes Linux-Programm
 
Zitat:

Zitat von Valle
Also ich mache das ohne screen ganz einfach mit folgendem Code.

Code:
nohup /usr/bin/meinprogramm >/dev/null
das Programm "nohup" sorgt dafür, dass das Programm auch noch läuft, wenn du dein SSH Fenster schließt. Die Ausgabeweiterleitung ">/dev/null" sorgt dafür, dass deine Ausgaben des Programms nicht in eine Datei gespeichert werden, sondern einfach verworfen werden. Normal speichert "nohup" nämlich die Ausgaben des Programms in eine Datei namens nohup.out. Die wird mit der Zeit dann aber ziemlich groß.

Was du beachten musst kann ich die nicht so genau sagen, in C++ schonmal garnicht, denn ich kann kein C++. Ich habe allerdings auf beiden Betriebssystemen Python programmiert. Mein zugegenermaßen etwas dämlicher Ansatz: Wenn du es von Betriebssystem $x auf $y portieren willst, dann versuch es erstmal ohne Änderung zu kompillieren. Vielleicht geht es ja. (Eher nicht *g*) Ansonsten gibt der Compiler schon entsprechende Meldungen aus. Wenn er etwas sagt wie "Function not found: exitWindowsEx()", dann wird das wohl heissen, dass Linux diese Funktion nicht hat. Dann muss man halt eine andere suchen. ;-)

Probier's einfach aus. :mrgreen:

Mit freundlichen Grüßen,

Valle

Naja also eigentlich müsste es klappen, da ich ja nur den Plattformunabhänigen C++-Teil verwende...

RavenIV 7. Mai 2008 08:36

Re: [C++] Permanent laufendes Linux-Programm
 
Zitat:

Zitat von Valle
das Programm "nohup" sorgt dafür, dass das Programm auch noch läuft, wenn du dein SSH Fenster schließt. Die Ausgabeweiterleitung ">/dev/null" sorgt dafür, dass deine Ausgaben des Programms nicht in eine Datei gespeichert werden, sondern einfach verworfen werden. Normal speichert "nohup" nämlich die Ausgaben des Programms in eine Datei namens nohup.out. Die wird mit der Zeit dann aber ziemlich groß.

Das nohup braucht es nicht unbedingt.
Versuch mal, unter linux ein normales Programm mit dem Parameter "&" zu starten.
Also z.B. "ping www.web.de &".
Dann die ssh-Sitzung schliessen.
Neu per ssh anmelden.
Dann mit "ps -aux" alle laufenden Prozesse anezigen lassen.
Da sollte dann das ping von vorhin dabei sein.

Valle 7. Mai 2008 13:25

Re: [C++] Permanent laufendes Linux-Programm
 
Zitat:

Zitat von RavenIV
Das nohup braucht es nicht unbedingt.
Versuch mal, unter linux ein normales Programm mit dem Parameter "&" zu starten.
Also z.B. "ping www.web.de &".
Dann die ssh-Sitzung schliessen.
Neu per ssh anmelden.
Dann mit "ps -aux" alle laufenden Prozesse anezigen lassen.
Da sollte dann das ping von vorhin dabei sein.

Grade eben getestet, geht nicht. Das Programm Ping ist weg.
Getestet: Debian 4.0 Kernel 2.6.9-023stab046.2-enterprise mit PuTTY

Mit freundlichen Grüßen,

Valle


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz