Konnte es lösen. Siehe github.
Ein zukünftiger Entwickler wer ich wohl wegen dem Alter nicht mehr!
PS:
Komme aus dem Atari 800XL/C64 Zeitalter.
os.execv(sys.argv[0], sys.argv) ein Argument mitgeben
Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
(Murphys Gesetz)
(Murphys Gesetz)
Da bist du hier nicht alleine. Welcome in da club! Ich bin mit nem Sinclair ZX81 angefangen, den ich als Bausatz erworben und selbst zusammengelötet habe.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Um zum Thema zurück zu kommen:
Habe dann nach Euren Ratschlägen versucht, das Problem mit while-Schleife zu lösen.
Da machte mir aber der PodSixNet-Server einen Strich durch die Rechnung.
Der "vergisst" den Client leider nicht und behält die entsprechende Game-Klasse bei.
Beim Client wäre so eigentlich alles sauber abgelaufen.
Wenn ich beim Clienten einen Connection.close ausführte, bekam der Client ein Problem usw.
Die jetzige Lösung läuft nun soweit stabil mit os.system('"' + sys.argv[0] + '"')
Der PodSixNet-Server "vergisst" so diesen User und der kann dann wieder sauber von 0 anfangen.
Für allfällige Ausraster entschuldige ich mich.
Habe dann nach Euren Ratschlägen versucht, das Problem mit while-Schleife zu lösen.
Da machte mir aber der PodSixNet-Server einen Strich durch die Rechnung.
Der "vergisst" den Client leider nicht und behält die entsprechende Game-Klasse bei.
Beim Client wäre so eigentlich alles sauber abgelaufen.
Wenn ich beim Clienten einen Connection.close ausführte, bekam der Client ein Problem usw.
Die jetzige Lösung läuft nun soweit stabil mit os.system('"' + sys.argv[0] + '"')
Der PodSixNet-Server "vergisst" so diesen User und der kann dann wieder sauber von 0 anfangen.
Für allfällige Ausraster entschuldige ich mich.
Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
(Murphys Gesetz)
(Murphys Gesetz)
- __blackjack__
- User
- Beiträge: 13241
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@spicer: `os.system()` ist noch schlechter als `os.execv()`, weil jetzt der Prozess nicht ersetzt wird, sondern jedes mal für das wiederholen ein neuer Prozess gestartet wird, und der alte jeweils auf das Ende des vorhergehenden wartet.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
@__blackjack__ aber gibt’s das unter Windows? Bzw wenn ja, dann ist das eh so implementiert. Weil Windows das nicht kann. Das macht IMHO keinen Unterschied.
Dass die verwandte Bibliothek das nicht zulässt, anders zu machen, würde man gerne mal an einem minimalen Beispiel sehen. Wenn dem wirklich so ist, würde ich die eher umschrieben, denn dann ist sie Mist.
Dass die verwandte Bibliothek das nicht zulässt, anders zu machen, würde man gerne mal an einem minimalen Beispiel sehen. Wenn dem wirklich so ist, würde ich die eher umschrieben, denn dann ist sie Mist.
Aus dem Quelltext von PodSixNet:
So wie ich das sehe ist es ziemlich trivial, einen neuen EndPoint zu erzeugen, wenn man nicht auf globale Variablen aufsetzt, was man ja eh nicht machen sollte.'connection' is a singleton instantiation of an EndPoint which will be connected to the server at the other end. It's a singleton because each client should only need one of these in most multiplayer scenarios. (If a client needs more than one connection to the server, a more complex architecture can be built out of instantiated EndPoint()s.)
- __blackjack__
- User
- Beiträge: 13241
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@__deets__: Die Funktion gibt es unter Windows und die Beschreibung sagt der Prozess wird ersetzt. Unter Windows gibt's eine neue Prozess-ID, aber ich hoffe doch mal nicht, dass der alte Prozess weiterhin existiert, das wäre eine Einschränkung die in der Dokumentation stehen müsste.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
- DeaD_EyE
- User
- Beiträge: 1037
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Ich habe dir mal eine Endlosschleife gebaut.
Programm ruft sich selbst auf und die Argumentenliste wird immer länger.
Den einzigen Einsatz-Zweck, den ich dafür mal hatte, war die Ausführung via sudo.
In deinem Fall wäre das halt ein weiterer Flicken. Oftmals ist es einfacher den Code hinterher neu zu schreiben, wenn man genau weiß, welche Fehler man gemach hat.
Der Code da oben ist keine gute Übergangslösung. Du müsstest z.B. verhindern, dass sich das Programm in einer Endlosschleife selbst neu startet.
Programm ruft sich selbst auf und die Argumentenliste wird immer länger.
Code: Alles auswählen
import os
import sys
import time
print("argv:", sys.argv)
time.sleep(1)
os.execv(sys.executable, [sys.executable, *sys.argv, "Extra-Argument"])
In deinem Fall wäre das halt ein weiterer Flicken. Oftmals ist es einfacher den Code hinterher neu zu schreiben, wenn man genau weiß, welche Fehler man gemach hat.
Der Code da oben ist keine gute Übergangslösung. Du müsstest z.B. verhindern, dass sich das Programm in einer Endlosschleife selbst neu startet.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server