Existe-t-il un équivalent (CLI ou GUI) de la fonction /proc/$PID/environ
fonction ?
Existe-t-il un moyen d'imprimer ces données après coup ?
Existe-t-il un équivalent (CLI ou GUI) de la fonction /proc/$PID/environ
fonction ?
Cela ne fonctionne pas si les valeurs des variables d'environnement contiennent des espaces.
Voir la fonction EnvironFromProcId() :
https://github.com/time-killer-games/xproc/blob/main/crossprocess.cpp
void EnvironFromProcId(PROCID procId, char ***buffer, int *size)
A partir du PROCID spécifié, (typedef pour DWORD
/ unsigned long
sous Windows, sinon pid_t
/ int
pour Mac, Linux et autres Unix), la fonction doit copier un vecteur de chaînes d'environnement (NOM=VALEUR) dans 'buffer', et la quantité de chaînes doit être copiée dans 'size'. Cette fonction n'est pas thread safe, cependant la source peut être modifiée pour qu'elle devienne thread safe. Notez que cette fonction utilise une structure incomplètement documentée sous Windows, et afin de pouvoir lire le bloc d'environnement entre (vers et depuis) les processus 32 bits et 64 bits, elle utilise une méthode qui n'est pas aussi performante que sur les autres plateformes. Il est construit avec des exécutables secondaires compilés directement dans l'exécutable initial, qui est extrait dans le répertoire temporaire de Windows au moment de l'exécution, et s'exécute à partir de là. Selon l'architecture de l'image exécutable associée au processus cible, cela déterminera l'architecture de l'exécutable secondaire à exécuter. Écrit pour Windows, Mac, Linux et FreeBSD. Besoin d'Ubuntu / Debian libprocps-dev
également libx11-dev
si elle est compilée en utilisant le build*w.sh
construire des scripts qui incluent du code de fenêtrage, (pas par défaut). FreeBSD aura besoin de libX11
si elle est construite avec des fenêtres.
Ou bien, compilez à partir du code source en utilisant les scripts de compilation scripts (MinGW / g++ sur Windows / Linux, clang sur Mac / FreeBSD), puis exécutez à partir de la ligne de commande en passant le paramètre --env-from-pid pid
paramètres de la ligne de commande. Passez le paramètre --help pour obtenir la liste de toutes les options possibles.
Par commodité, l'exemple d'utilisation est dans main.cpp
(le code CLI réel) : https://github.com/time-killer-games/xproc/blob/fe14ec70e4e58359ddf3d29aa03c86328c97b49b/main.cpp#L153
Excellent. Lien utile, qui confirme des informations que j'ai vues ailleurs mais qui sont plus faciles à digérer. Je vous suggère de mettre à jour votre réponse pour mettre en évidence les étapes clés que le code effectue (Call NtQueryInformationProcess
alors ReadProcessMemory
du PEB, puis les ProcessParameters et enfin l'Environnement.
LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.
1 votes
Essayez
ps eww <PID>
dans le terminal.