befehle an laufendes programm

darkeye2

Bekanntes Mitglied
Hallo,

ich konnte nach dem Problem nichtmal richtig googeln, da ich net weiß, wie ich das richtig formulieren soll. Worum es geht ist eigentlich ganz einfach ... wenn zum Beispiel ein Programm im hintergrund läuft lässt es sich meistens per console ansprechen, jetzt wollte ich wissen, wie das geht.

Bsp.:
wenn mein antivierusprogramm läuft kann ich mit:
nameDesProgramms -t irgendeinedatei.exe
sagen, dass die datei auf vieren geprüft werden soll. Das gebe ich einfach in die colsole ein und schon kriege ich eine rückgabe.

Wie genau funktioniert sowas, ist es mit java möglich?
 
ja,

aber dafür wird ein neuer Prozess gestartet...

Das, was im Hintergrund läuft läuft unabhängig.
 
hmm, ok, sowas wie auf viren prüfen wäre mit einen neuen prozess möglicht, aber wenn ich jetzt das prog beenden will, indem ich in der cosole sag, dass es sich schließen will (halt den befehl übergebe) wie wird dass dann realisiert?

Mein Programm läuft auf einen Server und ich muss immer wenn ich es beenden will nach den java- prozess suchen (mit befehl top) und dann die id mir notieren und per kill den prozess killen, nun möchte ich das anders regeln.
mit :
Programmname -shutdown
soll mein programm sich beenden, doch wie kriegt es diesen befehel, ein neu startender prozess kann ja schlecht den alten beenden oder?
 
dafür muss dein Programm ein Programm iein interface bieten.

Spontan sehe ich diese Möglichkeiten:

Programm wartet auf eingabe via Console
Programm bietet ein socket an
Socket via RMI

In den beiden letzten Fällen schreibt man ein Programm, dass die shutdown methode ausführt.

Somit startet ein Prozess, der den anderen beendet und sich selbst dann beendet.

Eventuell liegt hier auch ein Designfehler vor.

Wieso beendet sich der Prozess, wenn er nicht gebraucht wird von alleine?
 
so was funktioniert mit dem String array das jeder main methode mitgegeben wird
Code:
public static void main ([b]String [] args[/b]){
in diesem array sind die von der console mitgegebenen paremeter also wenn du z.b. dein prog mit java DeineKlasse -blabla startest dann ist die länge von args 1 und args [0] = "-blabla"
in der main methode kannst du dann auf diese parameter reagieren
 
Zum Programm selbst:
Es wird eigentlich dauerhaft gebraucht, aber ab und zu gibt es umstellungen, bei dennen das Programm vorher beendet werden soll. Es darf sich nicht selbst beenden, somit brauche ich wohl eine möglichkeit es über einen befehl oder ein programm zu beenden.

Zu Lösungsansatz 2 und 3: das würde ja heißen, dass ich einen weiteren thread brauche, der eben auf nachrichten wartet ..., da mein Programm bereits 3 weitere Threads startet, ist es nicht etwas viel? Bzw. ist es normal, dass man so viele Threads benutzt?

Schonmal danke für deine Ideen und deine Hilfe

@Java-Freak: das kenne ich, aber das geht ja nur beim starten des programms und nicht irgendwie wenn es seit ner woche irgendwo im hintergrund läuft, die main methode wird ja nur beim start aufgerufen ...
 
Der zusätzliche Thread ist inaktiv und berbrocht keine Ressourcen, da er auf einem Socket horcht oder auf eine eingabe wartet.
 

Zurück
Oben