Seite 1 von 2
Programme als SLAVE / PID Weitergabe
Verfasst: 26.04.2009 12:42
von LifeSux
Hallo! Ich habe ein kleines Problem. Ich probiers mal bildlich:
Programm1 ---startet-> Programm2 (und notiert sich sofort pid für spätere Rückfragen)
Ich will:
Programm1 ---startet-> MeinProgram ---startet Programm2
Mein Problem ist, dass sich Programm1 jetzt die PID von MeinProgramm notiert. Weder Programm1 noch Programm2 wurden von mir geschrieben. Will Programm1 jetzt Programm2 killen, killt es natürlich MeinProgramm anstelle von Programm2, da Programm1 nur meine PID hat. Gibt es da etwas was ich machen kann? So wie:
Wenn MeinProgramm gekillt wird, kill es Programm2 mit
oder
Programm2 erhält die PID von MeinProgramm beim starten....
Bitte :[
Verfasst: 26.04.2009 22:18
von KeyKon
Du kannst vom MeinProgramm noch ein eigenes Programm starten lassen das wartet bis Mein Programm gekillt wurde und das dann Programm2 killt...
Verfasst: 26.04.2009 23:17
von ts-soft
Du kannst doch einfach Programm2 Killen, wenn Du geschlossen wirst.
Ich nehme mal an, das MeinProgramm eine Console ist, dann brauchste
natürlich noch ein Ereignis, wenn Du geschlossen wirst, das geht dann so:
Code: Alles auswählen
Procedure ControlHandler(fdwCtrlType)
Select fdwCtrlType
Case #CTRL_C_EVENT
Debug "ctrl-c"
ProcedureReturn #True
Case #CTRL_CLOSE_EVENT
; hier Programm 2 schliessen
Debug "close"
CloseConsole()
Case #CTRL_BREAK_EVENT
Case #CTRL_LOGOFF_EVENT
Case #CTRL_SHUTDOWN_EVENT
EndSelect
ProcedureReturn #False
EndProcedure
OpenConsole()
ConsoleColor(14,0)
ConsoleLocate(10,12)
PrintN("this is a test")
SetConsoleCtrlHandler_(@ControlHandler(), #True)
Repeat ;endless Loop
Delay(1)
ForEver
Verfasst: 27.04.2009 07:02
von LifeSux
Vielen Dank schonmal für die Antwort

Aber verursacht die
nicht unnötige CPU Arbeit?
Sehe ich das richtig, dass das eine Procedure ist, welche über einen Handler ermittelt ob die Console geschlossen wird und anhand dessen dann Prog2 killt?
Ich hab damit noch net so viel gearbeitet... Aber is ja fast Wochenende

, da hab ich denn mehr als genug Zeit. Danke schonmal!
Verfasst: 27.04.2009 07:22
von ts-soft
vielleicht sagste erstmal ob MeinProgram eine GUI ist, oder eine Console?
Die Schleife ist nur Platzhalter, für das, was MeinProgram macht, irgendwas
wirds doch wohl machen
Ansonsten haste es richtig erkannt, ich bin mal von einer Console
ausgegangen, weil mit einer GUI wäre es ja wesentlich einfacher auf das
Beenden zu reagieren.
Verfasst: 27.04.2009 16:18
von LifeSux
MeinProgram ist bisher nur eine BatchDatei, welche allerdings bald als richtiges Programm realisiert werden soll. Ich habe beide Möglichkeiten, würde ein ConsoleWindows allerdings begrüßen. Das Einzige, was MeinProgram macht, ist eine bestimmte EXE mit bestimmten Parametern zu starten, anstatt diese EXE ohne Parameter starten zu lassen. :]
Verfasst: 27.04.2009 16:20
von Kaeru Gaman
LifeSux hat geschrieben:Das Einzige, was MeinProgram macht, ist eine bestimmte EXE mit bestimmten Parametern zu starten, anstatt diese EXE ohne Parameter starten zu lassen. :]
... dir ist bekannt, dass du in einer Verknüpfung für die EXE Parameter mit angeben kannst?
Verfasst: 27.04.2009 21:37
von LifeSux
Kaeru Gaman hat geschrieben:LifeSux hat geschrieben:Das Einzige, was MeinProgram macht, ist eine bestimmte EXE mit bestimmten Parametern zu starten, anstatt diese EXE ohne Parameter starten zu lassen. :]
... dir ist bekannt, dass du in einer Verknüpfung für die EXE Parameter mit angeben kannst?
Gute Idee, aber leider nicht ganz so einfach. Das Programm1, welches Programm2 mit bestimmten Parametern aufrufen würde, hat nicht immer die gleichen Parameter. Meine bisherige Batch nimmt die Parameter AN und startet dann Programm2 mit diesen. Deshalb kann ich keine Verknüpfug nehmen. Versteht das eigtl wer? XD Iwi ...
Verfasst: 27.04.2009 21:54
von Kaeru Gaman
achso.. stimmt ja, dein prog soll ja so ein zwischenschalterwalter sein...
warum startet eigentlich das Prog1 nicht gleich das Prog2 mit den richtigen Parametern?
Verfasst: 27.04.2009 22:19
von LifeSux
Also.
Ich biete kostenloses Sponsoring (lol) für Clans bei etwas unbekannteren Games an. (z.B. Teeworld, Soldat)
Das Webinterface welches man kostenlos bekommen kann zum verwalten dieser Server bietet auch so genanntes "Vermieten / Buchen" von Servern an. Da kann dann jede x-belibige Person einen Server mit wunsch- Setting fürs bis zu 2 Stunden alle 14 Tage mieten. Dadurch könnten auch kleine Clans, welche nur 1 - 2 mal die Woche ein Match haben in den Genuss eines dedicated Servers kommen. Mit den GameServern an sich funktioniert es schon zu 100%. Wunderbar. Doch ich will den 'kleinen' auch einen Teamspeak Server für die Zeit zur Verfügung stellen, bei dem ich derzeit diese Probleme erfahre. (Vom Hersteller kein Support in dieser Richtung.)
Auch TS ist nativ im Webinterface 'eingebunden', verursacht allerdings Probleme wenn man probiert einen Server zu buchen (es geht angeblich (laut Hersteller des Interface) aus technischen Gründen nur eine Server oder so). Ich habe jetzt rausgefunden, dass man in der Commandline beim starten des TS² Servers auch die INI und Datenbank bestimmen kann. Das Webinterface kann allerdings keine Datenbank erstellen. Das macht jetzt MeinProgramm mit den Settings, die der Buchende im Webinterface einstellt. Diese eingestellten Settings vom Buchenden werden also an MeinProgramm geben, dieses erstellt die passende Datenbank und gibt dann alle nötigen Commands (wie z.B. die zu nutzende Datenbank) an den TeamSpeak Server.
Jetzt allerdings staret das Webinterface ja MeinProgramm. (Eine Batch als Exe... e.e) Dadurch kann das WebInterface den TS² Server welcher von MeinProgramm gestartet wird nicht beenden / restarten, da dem WebInterface nur die PID von MeinProgramm vorliegt. Ist die Buchungszeit (natürlich auch 100% kostenlos) jetzt abgelaufen, kann das WebInterface den Server nicht beenden sondern beendet nur MeinProgramm.
Kann mich irgendwer verstehen / mir folgen?
Vllt. hat ja noch jemand nen Silbertablet irgendwo rumliegen... würde auch Traffic / Webspace / Serverleistung / Nen Server (also für ein bestimmtes Game wenn ichs hab und es nich zu viel Leistung braucht...) bieten, falls mal jmd ne art Chat mit Server bauen will oder sowas. Immerhin ist das alles komplett uneigennützig... (wird bestimmt auch von den Clans bestätigt)