Récupération de l'ID de processus Java : navigation dans les dépendances de la plate-forme
Déterminer l'ID de processus (PID) d'un programme Java peut être une tâche difficile en raison de dépendances de la plateforme. Bien que des hacks spécifiques à chaque plateforme puissent exister, la recherche d'une solution plus polyvalente est souvent préférée.
Hacks dépendants de la plateforme
Diverses approches dépendant de la plateforme tentent de récupérer le PID . Pour Windows, Windows Management Instrumentation (WMI) peut être exploité pour obtenir l’ID de processus. Les utilisateurs Linux peuvent utiliser le système de fichiers "/proc" pour identifier le processus. Cependant, de tels hacks sont intrinsèquement limités à des plates-formes spécifiques.
La solution indépendante la plus proche de la plate-forme
ManagementFactory.getRuntimeMXBean().getName() fournit une approximation relativement cohérente de la PID dans une gamme diversifiée d’implémentations JVM. Il renvoie généralement une chaîne telle que « 12345@hostname », où « 12345 » représente l'ID du processus. Cependant, la documentation souligne qu'aucune garantie n'est fournie pour cette valeur.
Amélioration Java 9
Dans Java 9, une nouvelle API de processus apparaît qui offre un moyen plus fiable pour obtenir le PID. L'utilisation de ProcessHandle.current().pid() génère l'ID de processus sous la forme d'un entier long. Cette méthode est applicable à toutes les plates-formes et évite la dépendance à l'égard d'implémentations spécifiques à la plate-forme.
Conclusion
Bien qu'il s'agisse d'une solution universellement applicable et indépendante de la plate-forme pour récupérer l'ID de processus d'un programme Java reste insaisissable, ManagementFactory.getRuntimeMXBean().getName() et (pour Java 9 et versions ultérieures) ProcessHandle.current().pid() apparaît comme des options fiables qui répondent aux scénarios les plus courants.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!