Comment puis-je suivre les fenêtres associées dans X11 ?
-
09-06-2019 - |
Question
Malheureusement, ma question n'est pas aussi simple que de suivre deux fenêtres créées par le même processus.
Voici ce que j'ai :
- Deux utilisateurs, Jack et Jim, sont connectés à distance au même système Unix et exécutent des serveurs X
- Jack exécute une application, « AwesomeApp », qui ouvre une interface graphique dans une fenêtre X.
- Jim exécute une autre instance de cette application, ouvrant sa propre fenêtre GUI
- Maintenant, Jack exécute une application de supervision qui communiquera avec le processus propriétaire de la première fenêtre (par exemple « AwesomeApp ») car il s'agit de SON instance de « AwesomeApp ».
- Comment son instance du superviseur peut-elle trouver quelle instance de la fenêtre « AwesomeApp » est la sienne ?
Aaaahhhh... rechercher chaque utilisateur oui, cela pourrait fonctionner.Tant que je dis aux utilisateurs qu’ils ne peuvent pas se connecter avec le même compte utilisateur depuis deux endroits différents.
La solution
Vous pouvez utiliser pgrep pour obtenir l'ID de processus de l'instance AwesomeApp de Jack :
pgrep -u Jack AwesomeApp
Ainsi, si vous lancez l'application superviseur à partir d'un script shell, vous pouvez faire quelque chose comme ce qui suit :
AWESOME_ID=`pgrep -u $USER AwesomeApp 2>/dev/null`
# run the supervisor application and pass the process id as the argument
supervisor $AWESOME_ID
Alternativement, si vous ne souhaitez pas utiliser de programmes externes comme pgrep ou ps, vous pouvez toujours essayer de rechercher le processus dans /proc directement.