pid ermitteln
-
Huhu,
Ich brauche die Unix-Prozess ID meines Programms. Folgende Methode habe ich im Internet gefunden, funktioniert aber leide nicht wie erwartet, denn damit bekomme ich die pid des Befehls:
Process p = Runtime.getRuntime().exec("echo 42"); Field f = p.getClass().getDeclaredField("pid"); f.setAccessible(true); System.out.println(f.getInt(p));
Ich kann nicht einfach einen Launcher schreiben und die pid als Startargument übergeben, da es sich hier um eine Plugin für einen Minecraft Server handelt und ich keinen Zugriff auf die main-Argumente habe.
Wie bei meinen anderen Sachen muss das nur auf Unixen funktionieren, für Windowse entwickle ich nicht.
Vorschläge?
Grüße,
PI
-
Geschafft, Hell yeah.
Für alle, die das mal brauchen:
import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.lang.reflect.Field; import java.lang.reflect.Method; import sun.management.VMManagement; public class WHY_THE_FUCK_DO_I_NEED_A_CLASS_THIS_IS_JUST_A_STUPID_FUNCTION { public static int pid() { try { RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); Field jvm = bean.getClass().getDeclaredField("jvm"); jvm.setAccessible(true); VMManagement vm = (VMManagement) jvm.get(bean); Method getpid = vm.getClass().getDeclaredMethod("getProcessId"); getpid.setAccessible(true); return (Integer) getpid.invoke(vm); } catch(Exception e) {} return 0; } }
-
314159265358979 schrieb:
catch(Exception e) {} return 0;
Aua.
-
314159265358979 schrieb:
public class WHY_THE_FUCK_DO_I_NEED_A_CLASS_THIS_IS_JUST_A_STUPID_FUNCTION
Warum steckst du die Funktion nicht einfach dahin, wo sie gebraucht wird?
-
_kermit schrieb:
314159265358979 schrieb:
catch(Exception e) {} return 0;
Aua.
Nix aua. Faulheit.
Dasd schrieb:
314159265358979 schrieb:
public class WHY_THE_FUCK_DO_I_NEED_A_CLASS_THIS_IS_JUST_A_STUPID_FUNCTION
Warum steckst du die Funktion nicht einfach dahin, wo sie gebraucht wird?
Sinn?
-
Hihi
Aua und Faulheit liegen gar nicht so weit auseinaner."Sinn?" kann man bei deiner kruden Bezeichnungsweise übrigens auch fragen...
-
Wenn schon, denn schon.
-
Dasd schrieb:
314159265358979 schrieb:
public class WHY_THE_FUCK_DO_I_NEED_A_CLASS_THIS_IS_JUST_A_STUPID_FUNCTION
Warum steckst du die Funktion nicht einfach dahin, wo sie gebraucht wird?
Soll etwa jede Klasse ne Implementierung von pid() mitliefern?
-
Ethon__ schrieb:
Dasd schrieb:
314159265358979 schrieb:
public class WHY_THE_FUCK_DO_I_NEED_A_CLASS_THIS_IS_JUST_A_STUPID_FUNCTION
Warum steckst du die Funktion nicht einfach dahin, wo sie gebraucht wird?
Soll etwa jede Klasse ne Implementierung von pid() mitliefern?
Ich glaube kaum, dass _jede_ Klasse die pid braucht. Außerdem ändert die sich ja während der Laufzeit des Programmes eher selten. Es wird für die Funktion schon einen semantisch sinnvollen Kontext geben. Und wenn nicht kann man immer noch so etwas wie MyCoolProcessStuff daraus machen.
-
Dasd schrieb:
Ich glaube kaum, dass _jede_ Klasse die pid braucht.
Richtig, sie wird einmal gebraucht.
Dasd schrieb:
Es wird für die Funktion schon einen semantisch sinnvollen Kontext geben.
Nein. Ein Server-Plugin hat mit der pid des Servers wenig zu tun.
Dasd schrieb:
Und wenn nicht kann man immer noch so etwas wie MyCoolProcessStuff daraus machen.
Und was macht MyCoolProcessStuff besser als WHY_THE_FUCK_DO_I_NEED_A_CLASS_THIS_IS_JUST_A_STUPID_FUNCTION? Meine IDE hat Auto-Completion.
-
314159265358979 schrieb:
Dasd schrieb:
Ich glaube kaum, dass _jede_ Klasse die pid braucht.
Richtig, sie wird einmal gebraucht.
Dann kann man sie auch genau dahin stecken.
314159265358979 schrieb:
Und was macht MyCoolProcessStuff besser als WHY_THE_FUCK_DO_I_NEED_A_CLASS_THIS_IS_JUST_A_STUPID_FUNCTION? Meine IDE hat Auto-Completion.
In meinem Namen kommt "Process" vor.
-
Dasd schrieb:
Dann kann man sie auch genau dahin stecken.
Nein, weil es keinen Sinn ergibt. Du hast 0 Ahnung von gutem Software Design - ein typischer Java-Programmierer halt.
Dasd schrieb:
In meinem Namen kommt "Process" vor.
Dir ist die Abkürzung pid hoffentlich geläufig. Ansonsten nenn die Funktion halt processId oder so.
-
314159265358979 schrieb:
Dasd schrieb:
Dann kann man sie auch genau dahin stecken.
Nein, weil es keinen Sinn ergibt. Du hast 0 Ahnung von gutem Software Design - ein typischer Java-Programmierer halt.
Lustig. Man wirft Java-Leuten hier gerne vor, in C++ wie in Java programmieren zu wollen. Bei dir trifft wohl genau der umgekehrte Fall zu.
314159265358979 schrieb:
Dasd schrieb:
In meinem Namen kommt "Process" vor.
Dir ist die Abkürzung pid hoffentlich geläufig. Ansonsten nenn die Funktion halt processId oder so.
Falsch. Der Funktionsname ist okay. Es geht hier um den Klassenamen. Irgendwann weißt du nicht mehr, ob du in WHY_THE_FUCK_DO_I_NEED_A_CLASS_THIS_IS_JUST_A_STUPID_FUNCTION oder OMG_ANOTHER_CLASS_I_NEED_FOR_ANOTHER_FUNCTION nach pid() suchen musst. Aber stimmt, deine IDE hat bestimmt auch eine Volltextsuche. Aber hieß die Funktion gleich nochmal pid oder processId oder...?
-
Dasd schrieb:
Lustig. Man wirft Java-Leuten hier gerne vor, in C++ wie in Java programmieren zu wollen. Bei dir trifft wohl genau der umgekehrte Fall zu.
Ich tue das, was Sinn ergibt. Und es ergibt definitiv nicht Sinn, für jeden gottverdammtden Scheißdreck eine Klasse zu erstellen, oder Funktionen in Klassen zu stopfen, in die sie nicht gehören. Was zur Hölle ist eigentlich ein Math Objekt?
Dasd schrieb:
Falsch. Der Funktionsname ist okay. Es geht hier um den Klassenamen. Irgendwann weißt du nicht mehr, ob du in WHY_THE_FUCK_DO_I_NEED_A_CLASS_THIS_IS_JUST_A_STUPID_FUNCTION oder OMG_ANOTHER_CLASS_I_NEED_FOR_ANOTHER_FUNCTION nach pid() suchen musst. Aber stimmt, deine IDE hat bestimmt auch eine Volltextsuche. Aber hieß die Funktion gleich nochmal pid oder processId oder...?
Ich brauche nichts suchen, ich kenne Meine Funktionen und Pseudo-Klassen. Ich würde eine Funnktion niemals processId nennen, daher hab ich das Problem nicht
-
314159265358979 schrieb:
Dasd schrieb:
Lustig. Man wirft Java-Leuten hier gerne vor, in C++ wie in Java programmieren zu wollen. Bei dir trifft wohl genau der umgekehrte Fall zu.
Ich tue das, was Sinn ergibt. Und es ergibt definitiv nicht Sinn, für jeden gottverdammtden Scheißdreck eine Klasse zu erstellen, oder Funktionen in Klassen zu stopfen, in die sie nicht gehören. Was zur Hölle ist eigentlich ein Math Objekt?
Zusammen mit deinem Post weiter oben bezüglich "guten Softwaredesigns" ist das schon fast Bühnenreif
Ein "Math Objekt" gibt es in Java übrigens nichtIch brauche nichts suchen, ich kenne Meine Funktionen und Pseudo-Klassen.
Klar hast du das Problem nicht, deinem Kenntnisstand zu Urteilen können deine Projekte auch nicht viel größer sein als das, was man eben so im Info Unterricht 10. Klasse machen muss. Aber dann brauchst du hier niemandem was von "gutem Softwaredesign" zu erzählen, wenn du diese Meinung pfelgst
-
gastbeobachter schrieb:
Zusammen mit deinem Post weiter oben bezüglich "guten Softwaredesigns" ist das schon fast Bühnenreif
Du stecks also alles in Klassen. Ab hier kann man dich nicht mehr ernst nehmen.
gastbeobachter schrieb:
Ein "Math Objekt" gibt es in Java übrigens nicht
Es gibt eine Klasse Math. Klasse -> Instanzen
gastbeobachter schrieb:
deinem Kenntnisstand zu Urteilen können deine Projekte auch nicht viel größer sein als das, was man eben so im Info Unterricht 10. Klasse machen muss.
Ach komm, du willst doch nur trollen. Netter Versuchgastbeobachter schrieb:
Aber dann brauchst du hier niemandem was von "gutem Softwaredesign" zu erzählen, wenn du diese Meinung pfelgst
Ich bin nicht alleine mit meiner Meinung über Java, deine Trollversuche sind echt süß.
-
314159265358979 schrieb:
Du stecks also alles in Klassen. Ab hier kann man dich nicht mehr ernst nehmen.
In Java geht es nicht anders. Andere Sprachen machen es ähnlich (z.B. Smalltalk).
314159265358979 schrieb:
gastbeobachter schrieb:
Ein "Math Objekt" gibt es in Java übrigens nicht
Es gibt eine Klasse Math. Klasse -> Instanzen
Eine Klasse bedeutet noch lange nicht, dass Objekte instanziiert werden können. Was ist mit abstrakten Klassen? Klassen mit private/protected-Konstruktor? Für letzteres siehe java.lang.Math:
/** * Don't let anyone instantiate this class. */ private Math() {}
314159265358979 schrieb:
Ich bin nicht alleine mit meiner Meinung über Java
Schön. Da du weder die nötigen Kenntnisse über Java mitbringst, noch gewillt bist, sie dir anzueignen, kannst du stolz auf deine fundierte Meinung sein.
-
314159265358979 schrieb:
Es gibt eine Klasse Math. Klasse -> Instanzen
Eine Klasse ist was anderes als ein Objekt, du OOP Provi. Und die Math Klasse kann man gar nicht instantiieren.
Ich bin nicht alleine mit meiner Meinung über Java, deine Trollversuche sind echt süß.
Ne Meinung hat jeder Depp, Bildung nicht (s. oben)
-
_kermit schrieb:
In Java geht es nicht anders. Andere Sprachen machen es ähnlich (z.B. Smalltalk).
Erzähl mir mal was neues. Genau das kritisiere ich die ganze Zeit du Depp. Lies mal, bevor du schreibst.
_kermit schrieb:
Eine Klasse bedeutet noch lange nicht, dass Objekte instanziiert werden können. Was ist mit abstrakten Klassen? Klassen mit private/protected-Konstruktor? Für letzteres siehe java.lang.Math:
/** * Don't let anyone instantiate this class. */ private Math() {}
Das Konzept "Klasse" drückt aus, dass es Objekte derselben gibt. Dir fehlen offenbar massive Grundlagen. Ob die Klasse nun abstract ist oder nicht, spielt dabei keine Rolle, ein unzugänglicher Konstruktor ändert daran auch nichts.
_kermit schrieb:
Schön. Da du weder die nötigen Kenntnisse über Java mitbringst, noch gewillt bist, sie dir anzueignen, kannst du stolz auf deine fundierte Meinung sein.
Ich kann vermutlich besser Java als du und der andere Depp zusammen, also halt die Klappe, wenn du keine Ahnung hast, wovon du redest.
Das schlimmste daran ist, dass ihr genau wisst, dass ich Recht habe. Ihr wollt mich lediglich provozieren. Das ist euch gelungen, Glückwunsch.
Ihr seid einfach nur lachhaft. Womit habe ich es verdient, mich mit solchen Vollidioten hier streiten zu müssen? Ich ersuche hiermit einen freundlichen Mod um die Löschung der Posts, der Kindergarten hier ist echt unglaublich.
-
314159265358979 schrieb:
Das Konzept "Klasse" drückt aus, dass es Objekte derselben gibt.
Du hast durchaus Recht damit, dass Java dazu neigt, Klassen als Namensräume zu missbrauchen und damit freie Funktionen zu simulieren. Es wäre interessant, was passiert, wenn man das Keyword "static" einfach verbieten würde (außer für die main vielleicht; oder einen anderen Einstiegspunkt definieren). _Dann_ müsste man mit reiner OOP arbeiten.
Was ich eigentlich sagen wollte ist, dass man sich für Java vllt. davon entfernen sollte, in freien Funktionen zu denken und diese lieber semantisch sinnvoll Klassen zuordnet. Z.B. eine Klasse "CurrentJVMProcess", die die (nicht statische) Methode "getPid" anbietet. Aber scheinbar war meine Botschaft zu unterschwellig.
-
314159265358979 schrieb:
Das Konzept "Klasse" drückt aus, dass es Objekte derselben gibt. Dir fehlen offenbar massive Grundlagen.
Genau das wurde dir schon von 2 Leuten bereits gesagt und jetzt versuchst du den Spieß umzudrehen indem du versuchst den Diskussionsverlauf zu verdrehen?
Sorry, du warst doch derjenige der mit dämlichen Sachen wie "Math Objekt", "WHY_THE_FUCK_DO_I_NEED_A_CLASS_THIS_IS_JUST_A_STUPID_FUNCTION" und gleichzeitig "gutem Software Design"-Predigung angefangen hast, dann musst du dich halt nicht wundern, dass deine "Fähigkeiten" schnippische Kommentare hervorrufen. Dich jetzt in die Ecke zu stellen und "Depp", "Vollidiot" und "Kindergarten" zu rufen macht die Sache von deiner Seite aus auch eher mehr als weniger lächerlich. Also frohes Schaffen noch