AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unabhängigen Prozess starten

Offene Frage von "seppitm"
Ein Thema von seppitm · begonnen am 26. Mai 2014 · letzter Beitrag vom 27. Mai 2014
Antwort Antwort
Seite 1 von 2  1 2      
seppitm

Registriert seit: 10. Nov 2010
14 Beiträge
 
#1

Unabhängigen Prozess starten

  Alt 26. Mai 2014, 15:43
Hallo,
hat einer von euch eine Idee wie es möglich ist einen Prozess zu starten ohne das er ein Child / Sub Prozess ist? Ich weiß das es geht, da die Serversoftware von Valve das auch kann. Mir geht es darum die Speicherbeschränkung zu umgehen. wenn ich 10 Childprozesse erstelle ist der Speicher für meine Anwendung irgendwann voll. Deshalb möchte ich gerne Prozesse unabhängig von meiner Anwendung Starten (als hätte der Benutzer sie gestartet).

Wozu das ist:
Ich möchte gerne für meinen Windows Root eine Weboberfläche Basteln über die ich Gameserver starten kann, bis jetzt is es so das irgendwann der Stack für mein Programm voll ist. und die Server sollen auch nicht ausgehen wenn mein Programm aus ist.

mfg
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 15:47
Meinst du sowas wie MSDN-Library durchsuchenShellExecute?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 15:51
Was sind Child-Prozesse und wie erstellst du die?

Jeder Prozess hat in Windows grundsätzlich immer seinen eigenen Speicherbereich.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#4

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 16:54
Was sind Child-Prozesse [...]?
Naja, jeder Prozess auf jedem Betriebssystem hat irgendeinen Parent(prozess). Kann man sich im Process Explorer angucken, und einige Tools (auch solche für die Kommandozeile) können auch ganze Prozessbäume töten. Prozesse, die keinen (sichtbaren) Parent haben, gibt es zwar auch, aber die sind dann entweder spezielle Prozesse (init bei Linux, System und System Idle Process bei Windows) oder der Parent ist beendet worden.

Zitat:
Jeder Prozess hat in Windows grundsätzlich immer seinen eigenen Speicherbereich.
Hier kann ich nur zustimmen. Dazu gehört auch, dass jeder Prozess seinen eigenen Stack hat usw. Die Prozesse laufen wirklich unabhängig voneinander, und kein Kindprozess kann den Speicher des Vaters volllaufen lassen. Daher bleibt unklar, was eigentlich gemeint ist.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 17:00
Hallo,
wenn ich 10 Childprozesse erstelle ist der Speicher für meine Anwendung irgendwann voll. Deshalb möchte ich gerne Prozesse unabhängig von meiner Anwendung Starten (als hätte der Benutzer sie gestartet).
Wie schon gesagt wurde: Jeder Prozess (egal ob Child-Prozess oder nicht) erhält seinen eigenen virtuellen Speicher und kein anderer Prozess hat normalerweise auf den Speicher dieses Prozesses Zugriff.

Wenn du mehrere dieser Prozesse startest und der Arbeitsspeicher ist irgendwann voll, dann liegt das daran dass der Pc einfach nicht genug Arbeitsspeicher hat um alle deine Prozesse zu versorgen.

(Angenommen du hast 4GB RAM und 4 Prozesse die jeweils 1GB verbrauchen -> Arbeitsspeicher voll)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 17:12
Für mich hört sich das so an als würde da ein Aufruf z.B. einer PHP-Seite passieren und darin dann der Prozess gestartet werden, der dann wieder weitere Prozesse startet, richtig?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
seppitm

Registriert seit: 10. Nov 2010
14 Beiträge
 
#7

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 21:12
Ich starte sie via CreateProcess mit Delphi. Ich habe 32 GB Ram. Wenn ich eine Java Anwendung aus Delphi heraus starte und ihr 128MB RAM zuweise ist alles okay.
Wenn ich Java allerdings 2048MB zuweise, stürzt der Parent (also mein Delphi Programm) ab. Es passiert genau das gleiche wenn ich mehrere Server starte, die irgendwann zu viel RAM nutzen.

In einem Forum habe ich gelesen das die initiale Stack Größe erhört werden kann, den genaue Post habe ich nicht mehr aber das hier ist ähnlich, genau so habe ich es dann auch gemacht:

http://www.delphipraxis.net/148797-m...cht-nicht.html

Das hat auch funktioniert, doch es gibt auch dort ein Limit (was ich schon öfters überschritten habe, was dazu führt das alle Gameserver aus sind). Deshalb möchte ich gerne keinen sub Prozess von mir sondern einen vom System aus Starten. so wie hier zum Beispiel (c++):

http://stackoverflow.com/questions/5...endent-process
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#8

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 22:17
Ich starte sie via CreateProcess mit Delphi.
Hast du dazu mal etwas Code?

Zitat:
Ich habe 32 GB Ram.
Die überhaupt nicht relevant sind. Ich nehme mal an, dass dein Delphi-Programm 32 Bit ist. Dann beschränkt sich dein Adressraum auf 2 GiB.

Zitat:
Wenn ich eine Java Anwendung aus Delphi heraus starte und ihr 128MB RAM zuweise ist alles okay.
Wieso wird die wichtige Info, dass es um Java geht, jetzt erst erwähnt? Die JVM hat teilweise ihr eigenes Verhalten. Auf welche Weise (mit welchem Parameter) weist du denn der JVM den Speicher zu? Um welche Java-Software geht's denn? (Mal wieder Minecraft?)

Zitat:
Wenn ich Java allerdings 2048MB zuweise, stürzt der Parent (also mein Delphi Programm) ab.
Wie genau passiert das? Einfach so sang- und klanglos? Oder gibt's ne Meldung (von Dr. Watson bzw. der Fehlerberichterstattung)? Wenn ja, wie lautet diese?

MfG Dalai
  Mit Zitat antworten Zitat
seppitm

Registriert seit: 10. Nov 2010
14 Beiträge
 
#9

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 22:34
Habe den befehl nicht mehr habe es in der aktuellen Version mit der ShellAPI gemacht.

Es handelt sich um eine 64Bit Anwendung, ich bin ja nicht dumm...

Es handelt sich um das spiel um Minecraft richtig, was sollte sonst so viel verbrauchen.
Code:
java -Xmx3072M -Xms1024M -XX:MaxPermSize=1024m -Duser.dir="C:\Users\USERNAME\AppData\Roaming\MCPACK\v4" -Dfml.ignorePatchDiscrepancies=true -Djava.library.path="C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\enhaNatives" -cp "C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\argo\argo\2.25_fixed\argo-2.25_fixed.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\google\code\gson\gson\2.2.2\gson-2.2.2.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\google\guava\guava\14.0\guava-14.0.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\paulscode\codecjorbis\20101023\codecjorbis-20101023.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\paulscode\codecwav\20101023\codecwav-20101023.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\paulscode\libraryjavasound\20101123\libraryjavasound-20101123.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\paulscode\librarylwjglopenal\20100824\librarylwjglopenal-20100824.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\com\paulscode\soundsystem\20120107\soundsystem-20120107.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\commons-io\commons-io\2.4\commons-io-2.4.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\lzma\lzma\0.0.1\lzma-0.0.1.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\java\jinput\jinput\2.0.5\jinput-2.0.5.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\java\jinput\jinput-platform\2.0.5\jinput-platform-2.0.5-natives-windows.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\java\jutils\jutils\1.0.0\jutils-1.0.0.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\minecraft\launchwrapper\1.3\launchwrapper-1.3.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\minecraftforge\minecraftforge\9.10.0.845\minecraftforge-9.10.0.845.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\minecraftforge\minecraftforge\9.10.1.871\minecraftforge-9.10.1.871.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\optifine\optifine\1.6.2_HD_C4\optifine-1.6.2_HD_C4.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\net\sf\jopt-simple\jopt-simple\4.5\jopt-simple-4.5.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\bouncycastle\bcprov-jdk15on\1.47\bcprov-jdk15on-1.47.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\lwjgl\lwjgl\lwjgl\2.9.0\lwjgl-2.9.0.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\lwjgl\lwjgl\lwjgl-platform\2.9.0\lwjgl-platform-2.9.0-natives-windows.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\lwjgl\lwjgl\lwjgl_util\2.9.0\lwjgl_util-2.9.0.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\ow2\asm\asm-all\4.1\asm-all-4.1.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\scala-lang\scala-compiler\2.10.2\scala-compiler-2.10.2.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\libraries\org\scala-lang\scala-library\2.10.2\scala-library-2.10.2.jar;C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\versions\1.6.2-Forge9.10.1.871\1.6.2-Forge9.10.1.871.jar" net.minecraft.launchwrapper.Launch --username USER --session token:1337:1337 --version 1.6.2-Forge9.10.1.871 --gameDir "C:\Users\USERNAME\AppData\Roaming\MCPACK\v4" --assetsDir "C:\Users\USERNAME\AppData\Roaming\MCPACK\v4\assets" --tweakClass cpw.mods.fml.common.launcher.FMLTweaker -Dfml.ignorePatchDiscrepancies=true --server 1313131231232 --port 1337
Das baut mein Tool halt dynamisch zusammen.

Es stürzt einfach ohne Meldung ab, manchmal kommt schon eine aber bekomme die grade nicht reproduziert, es ist allerdings nicht so wenn ich den obigen Befehl in die CMD packe und das so ausführe...

Geändert von seppitm (26. Mai 2014 um 22:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Unabhängigen Prozess starten

  Alt 26. Mai 2014, 22:39
(Angenommen du hast 4GB RAM und 4 Prozesse die jeweils 1GB verbrauchen -> Arbeitsspeicher voll)
Was ist denn das für ein Unsinn? Mit 8 GB könnten alsur 8 Prozesse laufen? Guck mal in deinen Taskmanager wie viel Prozesse da schon nach dem Start laufen. Dienste sind auch Prozesse. Das Stichwort ist hier virtueller Adressraum und was alles dazu gehört.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz