kostenloser Webspace werbefrei: lima-city


Anwendung als Prozess ausfüren

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Ich habe eine C++-Anwendung, die ich für relativ lange Zeit ausführen möchte. Da ich Ubuntu als Plattform verwende, könnte ich das offene Terminal einfach auf eine Arbeitsfläche schieben, die ich grad nicht brauche. Jedoch möchte ich das nicht, sondern lieber eine unsichtbar ausgeführte Anwendung. Falls das möglich ist -ich weis es nicht, aber ich nehme es an.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,

    evtl. hilft bereits das Starten der Applikation im Hintergrund ?
    cppappl &

    Wenn das Programm ein logout (kein Herunterfahren!) überstehen soll, dann könnte auch
    nohup (http://en.wikipedia.org/wiki/Nohup) einen Versuch lohnen.

    Bei Programmen mit GUI könnte der Switch -iconic (oder ähnlich) vorhanden sein, der die Applikation minimiert startet.

    Auch denkbar: non-GUI-Applikation aus xterm heraus minimiert starten:
    xterm -iconic -e cppappl &

    HTH

    Edit: Annahme, dass Dein Programm den Namen cppappl hat.

    Beitrag zuletzt geändert: 21.12.2009 18:09:56 von perlbotics
  4. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Also ein Herunterfahren muss und soll das Programm auch garnicht überstehen. Es soll beim Runterfahren einfach beendet werden.

    Könntest du mir ein Beispiel dafür geben, welchen Befehl ich zum Starten ins Terminal eingeben soll?
  5. Du schickst ein Programm in den Hintergrund (background process), wenn Du beim Starten in der Kommandozeile ein & anhängst.

    Wenn Dein Programm den Namen cppappl hat, dann kannst Du im einfachsten Fall das Programm mit
    cppappl &
    starten. Allerdings werden dann Ausgaben (STDOUT, STDERR) weiterhin in der Console erscheinen, was oft als störend empfunden wird.

    Bei GUI-Applikationen kann also das Umleiten der Ausgabe nach /dev/null sinnvoll sein, da man die Ausgabe i.d.R. nur zum Debugging nutzt. Dann verwendest Du
    cppappl >/dev/null 2>/dev/null &
    oder kürzer
    cppappl >/dev/null 2>&1 &

    Bei Non-GUI-Applikationen interessiert i.d.R. die Ausgabe, dann kann es sinnvoll sein, die Applikation in einem eigenen minimierten Fenster zu starten
    xterm -iconic -e cppappl &

    oder man leitet die Ausgabe in eine Datei um, die man sich später ansehen kann, z.B.
    cppappl >ausgabe.txt 2>fehler.txt &

    Anschliessend kann man sich die Ausgaben des Programms in fehler.txt oder ausgabe.txt ansehen.

    Es hängt also von der Art der Anwendung (interaktiv(GUI) oder nicht) ab und ob man etwas mit der (Standard-)Ausgabe machen möchte.

    (Edit: typos)

    Beitrag zuletzt geändert: 21.12.2009 18:32:16 von perlbotics
  6. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Da ist eventuell was falsch angekommen, bzw. ich habe es falsch oder unverständlich ausgedrückt. Ich will, dass das Terminal geschlossen werden kann, und die Anwendung trotzdem läuft. Ganz klein und versteckt im Hintergrund als Prozess.
  7. Sorry, dann fehlen halt essentielle Angaben....

    Welches Programm? Standardprogramm oder selber programmiert?
    Selber programmiert: Signalhandler implementieren.

    Welches Terminal-Programm (xterm, konsole, screen, etc.) ?

    GUI-Programm oder nicht?

    GUI: Existiert ein -iconic Switch oder nicht?

    Eine GUI automatisch zu verkleinern, wenn die Shell - aus der es heraus manuell gestartet worden ist -
    geschlossen wird, ist mit einfachen Mitteln m.W. nicht möglich.
    Aber wozu? Wenn es eine GUI ist reicht ein Klick auf das Minimieren-Icon...

    Oder ich verstehe etwas völlig falsch...

    Funktioniert denn
    nohup cppappl &
    nicht?
  8. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Ich habe das Programm in PHP geschrieben, und dann in C++ umwandeln lassen (geht ja, wegen ähnlichem Syntax). Das Programm funktioniert einwandfrei.

    Ich habe jetzt den Startbefehl für das Programm + Und-Zeichen angehängt, und das Programm arbeitet. Auch, wenn ich das Terminal schließe, kommt keine Meldung, dass noch ein Prozess aktiv ist. Leider beendet sich dieser, sobald ich das Terminal schließe, folglich kann das Programm nicht mehr arbeiten, und es bringt mich nichts.
  9. Schau dir mal die Shell-Prozesssteuerung an:
    http://wiki.ubuntuusers.de/Shell/Befehls%C3%BCbersicht?highlight=shell#Prozesssteuerung

    Möglicherweise kannst du den benötigten nohup-Befehl direkt aus dem Programm heraus ausführen. (system() oder so)
  10. kochmarkus

    Co-Admin Kostenloser Webspace von kochmarkus

    kochmarkus hat kostenlosen Webspace.

    das-koenigreich schrieb:
    Ich habe das Programm in PHP geschrieben, und dann in C++ umwandeln lassen (geht ja, wegen ähnlichem Syntax). Das Programm funktioniert einwandfrei.

    Ich habe jetzt den Startbefehl für das Programm + Und-Zeichen angehängt, und das Programm arbeitet. Auch, wenn ich das Terminal schließe, kommt keine Meldung, dass noch ein Prozess aktiv ist. Leider beendet sich dieser, sobald ich das Terminal schließe, folglich kann das Programm nicht mehr arbeiten, und es bringt mich nichts.

    Ich glaub du darfst das Terminal, wenn darin noch ein Prozess im Hintergrund läuft, nicht mit dem 'X' rechts oben schließen, sondern durch Eingabe von 'exit' oder '^d'. Dann sollte der Prozess auch weiterlaufen.
  11. Hm,

    habe hier kein Ubuntu laufen (SuSE 11.1, KDE).

    Experiment:
    konsole>  xterm -e bash  &                       .oO( xterm öffnet sich )
    konsole> 
    
    xterm> nohup xeyes &
    xterm>

    Beim Klicken auf (X) des xterms wir dieses geschlossen, aber xeyes läuft weiter.

    Rätselhaft... (was der OP beschreibt).
    Vielleicht ein Fall für startproc?

  12. kochmarkus

    Co-Admin Kostenloser Webspace von kochmarkus

    kochmarkus hat kostenlosen Webspace.

    perlbotics schrieb:
    Hm,

    habe hier kein Ubuntu laufen (SuSE 11.1, KDE).

    Experiment:
    konsole>  xterm -e bash  &                       .oO( xterm öffnet sich )
    konsole> 
    
    xterm> nohup xeyes &
    xterm>

    Beim Klicken auf (X) des xterms wir dieses geschlossen, aber xeyes läuft weiter.

    Rätselhaft... (was der OP beschreibt).
    Vielleicht ein Fall für startproc?


    Stimmt, mit nohup bleibt die Anwendung beim schließen mit 'X' gestartet, aber ohne nohup muß man mit 'exit' oder '^d' beenden.

    Beitrag zuletzt geändert: 24.12.2009 10:22:39 von kochmarkus
  13. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    kochmarkus schrieb:
    Ich glaub du darfst das Terminal, wenn darin noch ein Prozess im Hintergrund läuft, nicht mit dem 'X' rechts oben schließen, sondern durch Eingabe von 'exit' oder '^d'. Dann sollte der Prozess auch weiterlaufen.

    Ich habe es versucht, das hat aber nicht geklappt. Das Terminal wurde geschlossen, der Prozess gleich mit. Glücklicherweise funktioniert es mit dem Befehl "nohup". Was mich irritiert ist diese Meldung, nachdem ich den Befehl eingegeben habe:
    nohup: ignoriere Eingabe und hänge Ausgabe an „nohup.out“ an

    Auf jeden Fall funktioniert es jetzt. Vielen Dank!
  14. nohup: ignoriere Eingabe und hänge Ausgabe an ?nohup.out? an

    Das bedeutet, dass Dein Programm vom Terminal keine Eingaben mehr entgegen nimmt (STDIN geschlossen), was in Deinem Fall vermutlich OK ist.
    Dafür werden die Ausgaben des so in den Hintergrund versetzen Programms am Ende der Datei nohup.out angehängt.
    Du kannst Dir das Ergebnis z.B. mit
    less nohup.out
    ansehen oder mit
    tail -f nohup.out
    ständig verfolgen.
    Aber vermutlich gibt es da nicht viel Interessantes zu sehen... und Du kannst die Datei beim nächsten mal löschen.
  15. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    Das zu wissen ist gut, bis jetzt gab es zwar keine Fehler, aber im Falle eines Falles sicher eine gute Log-Datei, da ich immer wieder was ausgeben lasse.


    Edit: Das Thema ist damit erledigt, ich bitte jedoch darum, das Thema offen zu lassen, falls später jemand noch eine Frage dazu hat, und keinen neuen Thread auf machen muss, in dem man dann den Zusammenhang zu dem bereits gelösten nicht mehr klar erkennt.


    Beitrag zuletzt geändert: 21.12.2009 21:01:50 von das-koenigreich
  16. perlbotics schrieb:
    Hm,

    habe hier kein Ubuntu laufen (SuSE 11.1, KDE).

    Experiment:
    konsole>  xterm -e bash  &                       .oO( xterm öffnet sich )
    konsole> 
    
    xterm> nohup xeyes &
    xterm>

    Beim Klicken auf (X) des xterms wir dieses geschlossen, aber xeyes läuft weiter.

    Rätselhaft... (was der OP beschreibt).
    Vielleicht ein Fall für startproc?





    In der Shell-Prozesssteuerung sollten die unterschiede eigentlich nicht so groß sein, bei den Distris.
    Da bei diesen Befehlen sollte SuSE und Ubuntu eigentlich identisch sein... würde mich sonst schwer wundern.
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!