Ich möchte einen Prozess aufrufen, der unabhängig vom ursprünglichen Prozess ist. Also könnte ich Runtime verwenden. Runtime.getRuntime().exec("java -Xms256M -Xmx256M -jar /home/HauptServer/Games/game1/cloud.jar -p "+port)
, aber dies wird nicht das Arbeitsverzeichnis festlegen. Also habe ich ProcessBuilder versucht: ProcessBuilder prb = new ProcessBuilder("java","-Xms256M","-Xmx256M","-jar","cloud.jar","-p",""+port).directory(new File("/home/HauptServer/Games/game1"));
aber in diesem Fall läuft es nicht unabhängig von meinem ursprünglichen Prozess. Haben Sie irgendwelche Lösungen?Wie kann ich einen unabhängigen Prozess mit ProcessBuilder erstellen oder das Arbeitsverzeichnis mit exec() setzen
0
A
Antwort
0
Verwenden Runtime.getRuntime().exec(String[] cmdarray, String[] envp, File dir)
Vom documentation
Executes the specified command and arguments in a separate process with the specified environment and working directory.
Verwenden Sie keine einzige Zeile Befehl (java -jar ...
). Verwenden Sie die cmdarray[]
und geben Sie bei dir
das Arbeitsverzeichnis
Beispiel
String cmdArray[] = new String[7];
cmdArray[0] = "java";
cmdArray[1] = "-Xms256M";
cmdArray[2] = "-Xmx256M";
cmdArray[3] = "-jar";
cmdArray[4] = "/home/HauptServer/Games/game1/cloud.jar";
cmdArray[5] = "-p";
cmdArray[6] = port;
Verwandte Themen
- 1. Prozess endet nie mit processBuilder
- 2. Wie kann ich das aktuelle Arbeitsverzeichnis für Docker Exec mit einer internen Bash-Shell einstellen?
- 3. Senden einer Nachricht vom untergeordneten Prozess zum übergeordneten Prozess beim Erstellen von untergeordneten Prozess mit exec()
- 4. Erstellen Sie einen neuen unabhängigen Prozess von einem anderen C-Prozess
- 5. Java: "UNIXProcess" -Fehler bei Verwendung von "exec" oder "ProcessBuilder", um einen Befehl auszuführen
- 6. php background Prozess mit exec Funktion
- 7. Android Runtime exec mit NetworkRequest
- 8. Java. Prozess von Runtime.getRuntime runned töten() exec()
- 9. Wie führe ich einen Prozess mit nginx
- 10. Wie bekomme ich das aktuelle Arbeitsverzeichnis mit Python 3?
- 11. PHP: Wie starte ich einen gelösten Prozess?
- 12. wie Telnet über Tee mit Java exec
- 13. Python: Unterprozess mit unterschiedlichem Arbeitsverzeichnis
- 14. Wie kann ich einen Datencontainer nur mit docker-compose.yml erstellen?
- 15. Wie erkennt R das Arbeitsverzeichnis als Arbeitsverzeichnis?
- 16. Wie kann ich vim das aktuelle Arbeitsverzeichnis automatisch ändern lassen?
- 17. Neue Registerkartensitzungen mit demselben Arbeitsverzeichnis erstellen
- 18. Java Runtime.getRuntime(). Exec() mit Anführungszeichen
- 19. Wie kann ich einen neuen Prozess mit einem anderen Benutzerkonto unter Windows erstellen?
- 20. Wie mache ich einen Go-Prozess?
- 21. Wie kann ich nach einem laufenden Prozess mit Ruby suchen?
- 22. Wie kann Exec das Verhalten von Exec-Programm ändern
- 23. Wie kann ich einen Prozess speichern?
- 24. Entscheidung zwischen exec Apache Commons oder Process
- 25. Kann ich einen Webdienst mit Eigenschaften erstellen?
- 26. Wie setze ich das Arbeitsverzeichnis auf ein älteres Commit?
- 27. Starten Sie CMD mit ProcessBuilder
- 28. Wie kann ich einen Java-Prozess beenden, der von ant exec plattformunabhängig gestartet wurde?
- 29. Anwendung mit unabhängigen Komponentenrouting reagieren
- 30. Wie verlangsame ich einen Prozess?
Vielen Dank für Ihre Antwort! Aber der Prozess ist immer noch ein Kind-Prozess des Originals und ich bekomme diesen Fehler: java.security.AccessControlException: Illegale Thread Group Access in dieser Zeile, wo ich den Prozess gestartet: 'Process pr = Runtime.getRuntime(). Exec (cmdArray, null, neue Datei ("/ home/HauptServer/Games/game1")); ' –
Die Ausführung hängt von Ihrem Hauptprozess ab. Einige Dinge können nicht geändert werden, wie der Benutzer, der den Prozess startet. Sie sind berechtigt, in der Sicherheitsrichtlinie ausgeführt zu werden? Es erlaubt Ihnen, andere Prozesse nicht Java zu laufen? – pedrofb
Ich weiß nicht .... –