ERLEDIGT
JA
JA
ANTWORTEN
31
31
ZUGRIFFE
1747
1747
EMPFEHLEN
-
28.03.11 11:55 #1
- Registriert seit
- Jan 2005
- Ort
- Regensburg [Bayern @ Mars]
- Beiträge
- 167
Hallo,
mein Problem ist folgendes: Ich habe einen Windows Dienst, der über die Process Klasse verschiedene Konsolenprogramme startet. UseShellExecute ist aus (um die Ausgaben abzufangen).
Wenn jetzt mein Programm unvorhergesehen abstürzt passiert folgendes:
Mein Dienst ist beendet, die einzelnen Gast-Prozesse werden netterweise vom System übenommen und weitergeführt. Genau das führt aber zu Problemen, wenn der Dienst neugestartet wird. Dann sind noch die alten Programme da und die neuen kommen dazu.
Kann man irgendwo einstellen, dass beim Beenden des Vater-Prozesses die Kinds-Prozesse mit geschlossen werden?
Schonmal Danke im voraus.
Grüße
ChristianMeine Webseite: http://www.doktor-kurzschluss.dePHP-Code:<?
include("google.php");
if ($schon_gesucht == false) {
echo "Erst einmal Google benutzen";
exit;
}
?>
-
Hi
Solltest du nicht eher verhindern, dass zum einen die Konsolenanwendungen abstürzen und wenn doch, diese nicht deinen Dienst in die Abgründe reisen?
http://msdn.microsoft.com/de-de/libr...ss.exited.aspxGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
30.03.11 10:32 #3
- Registriert seit
- Jan 2005
- Ort
- Regensburg [Bayern @ Mars]
- Beiträge
- 167
Hallo,
erstmal Danke für deine Antwort.
Dieser Mechanismus ist bereits in meinem Programm implementiert. Mein Problem ist folgendes (vielleicht kam es nicht richtig rüber):
Mein Dienst startet Kinds-Prozesse. Wenn jetzt, aus welchen Gründen auch immer der Dienst abstürzt (z. B. Prozess beenden im Taskmanager, unvorhergesehene Situationen usw.) muss er die Kinds-Prozesse mit in den Abgrund reißen.
Beispiel an der Windows Konsole:
Du startest über ein Batch-File ein Java Programm. Wenn man jetzt das Konsolenfenster schließt oder abschießt wird die zugehörige java.exe mit abgeschossen. Dieses Verhalten wünsch ich mir.
Grüße
ChristianMeine Webseite: http://www.doktor-kurzschluss.dePHP-Code:<?
include("google.php");
if ($schon_gesucht == false) {
echo "Erst einmal Google benutzen";
exit;
}
?>
-
Hi
Das ist aber genau anders rum, wie du oben geschrieben hast
Hast du probiert die OnStop-Methode zu überschreiben und das Thema da zu behandeln?
Ggf. auch im Dispose-EventGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
30.03.11 22:30 #5
- Registriert seit
- Jan 2005
- Ort
- Regensburg [Bayern @ Mars]
- Beiträge
- 167
Ich bin der Meinung, dass meine beiden Posts das selbe aussagen.
Wird denn das Dispose Event auch ausgelöst, wenn der Prozess hart beendet wird oder aus diversen Gründen abstürzt?
Am liebsten wäre es mir, wenn es eine Einstellung gibt, mit der ich das gewünschte Verhalten erzwingen kann. Mit anderen Programmen gehts doch auch.Meine Webseite: http://www.doktor-kurzschluss.dePHP-Code:<?
include("google.php");
if ($schon_gesucht == false) {
echo "Erst einmal Google benutzen";
exit;
}
?>
-
Andere Idee, wie wäre es wenn deine Programme in bestimmten Abständen prüfen ob der Dienst läuft (und/oder noch mit der gleichen Id läuft)?
Wie es mit dem event aussieht weiß ich nicht aber wenn du ein eigenes IDisposable- Objekt erstellst und in einem using BLock verwendest sollte die Dispose Methode schon greifen.
Aber das kann man ja auch schnell testen.
-
30.03.11 22:58 #7
- Registriert seit
- Jan 2005
- Ort
- Regensburg [Bayern @ Mars]
- Beiträge
- 167
Diese Funktion ist auch schon implementiert. Aber mir ist was anderes eingefallen: Ich speicher mir die PIDs in meiner Ini Datei und beim nächsten Starten prüfe ich, ob sie noch laufen.
Wobei, wenn dann die PID anderweitig vergeben wurde.
Wie kann ich denn meine Prozesse identifizieren? Da es meistens Java Programme sind steht im Taskmanager nur "java.exe" und davon kann es ja durchaus mehrere geben.Meine Webseite: http://www.doktor-kurzschluss.dePHP-Code:<?
include("google.php");
if ($schon_gesucht == false) {
echo "Erst einmal Google benutzen";
exit;
}
?>
-
Wenn ich dich richtig verstanden habe sind es alles deine Programme?
Dann übergib einfach die PID mit beim start des Programmes und halt se im jeweiligem Programm direkt, ohne Datei.
-
30.03.11 23:04 #9
- Registriert seit
- Jan 2005
- Ort
- Regensburg [Bayern @ Mars]
- Beiträge
- 167
Wenn alles meine Programme wären, würden sie nicht in Java geschrieben sein :P
Wenn mein Programm abstürzt wird auch die PID aus dem RAM gelöscht.Meine Webseite: http://www.doktor-kurzschluss.dePHP-Code:<?
include("google.php");
if ($schon_gesucht == false) {
echo "Erst einmal Google benutzen";
exit;
}
?>
-
Du solltest dein Programm dahingehend ändern, dass es einfach nicht mehr abstürzt. Das erscheint mir die beste Lösung.
hihi = -h²
-
-
Denke ich auch.
Wenn du die Prozess-Instanz im Parent hälst und dieser wird beendet, wollten auch alle Sub-Prozesse mitgezoben werden.
Wie startest du denn die anderen Prozesse?Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
01.04.11 09:11 #13
- Registriert seit
- Jan 2005
- Ort
- Regensburg [Bayern @ Mars]
- Beiträge
- 167
Also ich starte sie über die Klasse Process und lege dazu eine ProcessInfo an (Datei, Pfad usw.)
UseShellExecute = false
RedirectConsoleOut = true
Ich vermute, dass ich dieses Verhalten irgendwie erzwingen kann (Setting o. Ä.) aber bisher hab ich nichts gefunden.Meine Webseite: http://www.doktor-kurzschluss.dePHP-Code:<?
include("google.php");
if ($schon_gesucht == false) {
echo "Erst einmal Google benutzen";
exit;
}
?>
-
Ja, aber wie startest du? Legst du eine Prozess-Instanz an und ruft die Instanzmethode Start auf oder nutzt du die statische Methode Start?
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
02.04.11 00:01 #15
- Registriert seit
- Jan 2005
- Ort
- Regensburg [Bayern @ Mars]
- Beiträge
- 167
Für jeden Prozess, den ich starte instanziere ich ein neues Process Objekt.
Meine Webseite: http://www.doktor-kurzschluss.dePHP-Code:<?
include("google.php");
if ($schon_gesucht == false) {
echo "Erst einmal Google benutzen";
exit;
}
?>
Ähnliche Themen
-
mit programm prozess beenden
Von fredlllll im Forum Visual Basic 6.0Antworten: 7Letzter Beitrag: 25.06.08, 07:08 -
Prozess beenden
Von MedRamBO im Forum Sonstige SprachenAntworten: 13Letzter Beitrag: 07.11.07, 13:43 -
Prozess beenden
Von campari im Forum PHPAntworten: 6Letzter Beitrag: 20.01.07, 20:01 -
Prozess beenden
Von Impi2k im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 29.04.06, 15:27 -
Prozess beenden
Von flashgod im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 09.12.02, 16:41





Zitieren


Login





