J'ai un "petit" problème :)
Si je lance la commande
loginctl list-session
Je vais obtenir une sortie qui aura des colonnes session, uid, utilisateur et siège. J'ai donc session ici en tant que c6, c2, c4, etc.
De plus, j'ai un processus avec un identifiant et je veux savoir dans quelle session est-il en cours d'exécution?
par exemple
cat /proc/<pid>/sessionid
retournera un nombre comme 4294967295 qui est complètement différent de la session loginctl.
Maintenant, ma question principale est la suivante: comment obtenir l'identifiant de session loginctl, à partir de l'identifiant de processus.
Oui, je sais que je peux l'exécuter
ps aux | grep -i <pid> | awk '{print $1}'
et obtenez l'utilisateur, puis mappez cet utilisateur sur loginctl et obtenez l'identifiant de session ... mais je ne pense pas que ce soit la bonne solution. Par exemple, n'y a-t-il qu'une seule instance de UserA dans loginctl? Parce que je peux voir qu'il y a peu d'instances de lightdm (x display manager) et que je ne suis pas sûr de savoir quel identifiant de session est correct.
Et oui, je vais implémenter cela en C ++ (c ++ 11), donc je vais aussi accepter les réponses c ++ :)
Je vous remercie.
Cordialement, golobitch
setsid
? Une session logind contiendrait alors deux sessions du noyau. Je crois que la session Iogind ressemble plus à un groupe de contrôle, je ne suis pas tout à fait sûr de cela en utilisant logind (ou disons, systemd en tant que gardien de la maison), cela maintiendra une relation stricte entre les sessions du noyau et les groupes de contrôle gérés par systemd. Je pense également que l’utilisation de dbus pour obtenir une liste pid d’une session de connexion peut être une meilleure idée.