Programme als SLAVE / PID Weitergabe
Programme als SLAVE / PID Weitergabe
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 :[
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 :[
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
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:
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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

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!

Aber verursacht die
Code: Alles auswählen
Repeat ;endless Loop
Delay(1)
ForEver
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

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
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.
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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

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. :]
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
... dir ist bekannt, dass du in einer Verknüpfung für die EXE Parameter mit angeben kannst?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. :]
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
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 ...Kaeru Gaman hat geschrieben:... dir ist bekannt, dass du in einer Verknüpfung für die EXE Parameter mit angeben kannst?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. :]
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
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)
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)