2008-09-13 7 views
1

Malheureusement, ma question n'est pas aussi simple que de garder une trace de deux fenêtres créées par le même processus.Comment suivre les fenêtres associées dans X11?

Voici ce que j'ai:

  • Deux utilisateurs, Jack et Jim sont à distance connectés au même système Unix et exécuter des serveurs X
  • Jack exécute une application, « AwesomeApp », qui ouvre une GUI 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 superviseur qui communiquera avec le processus possédant la première fenêtre (par exemple 'AwesomeApp') parce que c'est HIS instance de 'AwesomeApp'
  • Comment son instance du superviseur peut-elle trouver quelle instance de la fenêtre 'AwesomeApp' est la sienne?

Aaaahhhh ... regardant vers le haut sur une base par l'utilisateur oui qui pourrait fonctionner. Tant que je dis aux utilisateurs qu'ils ne peuvent pas se connecter avec le même compte d'utilisateur à partir de deux endroits différents.

Répondre

1

Vous pouvez utiliser pgrep pour obtenir l'ID du processus de l'instance de Jack AwesomeApp:

pgrep -u Jack AwesomeApp 


Donc, si vous lancez l'application superviseur à partir d'un script shell, vous pourriez 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 


Sinon, si vous ne voulez pas utiliser des programmes externes comme pgrep ou ps, vous pouvez toujours essayer de regarder pour le processus dans /proc directement.

Questions connexes