Prozess beenden auf Unix

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hi

hab ne frage!
Ich führe auf Unix ein Java-Programm aus!
ich starte es über telnet:

Code:
java programm

zurzeit beende ich es ganz einfach mit Ctrl + C!
problem dabei ist, dass im hintergrund der process immer noch läuft!
ich will ihn nicht jedes mal von hand beenden (mit kill -9 prozessid)!! wie kann ich das ändern?

Gruss Flyer2004
 
Sezt in deinen Programmcode an der Stelle, wo das Programm aufhören soll ein:
System.exit(0);

Sollte hoffentlich helfen.

Oder hast du das Programm nicht selber geschrieben.
 
doch hab ich...nur das problem ist, das ich das programm über telnet beende...mit Ctrl+C!
und dann müsste ich im Programm irgendwie wissen das ich es beendet habe!
 
Code:
public class ??? imlements KyListener {

.....
.....

   //Konstruktor
    public ???() {
    
        addKeyListener(this);
    
    }

    public void keyPressed(KeyEvent event) {

        if(event.getKeyCode() == KeyEvent.VK_CONTROL + KeyEvent.VK_C) {
        
            System.exit(0);
        
        }        

    }

    public void keyReleased(KeyEvent event) {}

    public void keyTyped(KeyEvent event) {}

}

Weiß aber leider net wie du auf telnet zugreifen kannst.
So kannst du jedenfalls in deiner Programmkonsole direkt schließen.[/code]
 
hmm...du hast mich glaub falsch verstanden!

ich will gar keine konsole schliessen...damit hätte ich kein programm! ich drücke im "TELNET" CTRL+C und dann soll es auch die Prozesse im Hintergrund meines Javaprogramms schliessen!
 
Versuch's damit
Code:
...
Runtime.getRuntime().addShutdownHook(
  new Thread() {
    public void run() {
      System.out.println("...und Tschüß.");
    }
  }
);
...
 
na jetzt kommst du daher und erzählst, dass dein Programm zusätzliche Threads aufmacht

Ein Thread terminiert genau dann, wenn seine run() Methode endet ("returniert") - wenn du das nicht willst, musst du eben von aussen eingreifen

Was macht das Hauptprogramm (main), das du von der Konsole aufrufst?

RTFM wie man Threads "von aussen" beendet (interrupt usw)!
 
ich schreibe davon, dass du in
ich drücke im "TELNET" CTRL+C und dann soll es auch die Prozesse im Hintergrund meines Javaprogramms schliessen!
scheinbar sagen willst, dass deine Anwendung mehrere Threads startet? richtig?
 
@bleiglanz: hast du schon mal mit linux gearbeitet?
wenn du da ein java prog ausführst, sind das ca. 5 - 10 prozesse die da gestartet werden, das meint er 😉


beende es halt nicht mit ctrl +c sondern ctrl + a oder so, weil ich weiß nicht ob du ctrl + c abfangen kannst!

aber bei den restlichen einfach auf den tastendruck warten und dann beenden!
 
@thE_29

ich arbeite auch unter linux, wenn ich allerdings ein Konsolenprogramm mit Strg-C beende, dann werden alle zugehörigen Java-Prozesse gekillt

darum kommt mir das Verhalten von Flyer komisch vor
 
aso!

naja, eigentlich beenden sich ja alle prozesse (auch bei strg c, habs grad probiert)

ich "würg" halt nie wirklich ein programm so damit ab, aber ob unter telnet das gleiche passiert ist ne frage!

aaabbbbbeeer, wennst nen timer oder thread hast und dann mit strg c abwürgst, glaube ich bleiben die am leben (ist mir schon 1mal passiert) und dann hattest du vorher recht... 😉

außerdem baut man eine gewisse tastenkombi ein, damit ein programm sich beendet und net den standard kill key!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben