Wie behalte ich den Überblick über relevante Fenster in X11?
-
09-06-2019 - |
Frage
Leider ist meine Frage nicht so einfach wie Spur von zwei Fenstern nach dem gleichen Verfahren erstellt zu halten.
Hier ist, was ich habe:
- Zwei Benutzer, Jack und Jim sind remote angemeldet den gleichen Unix-System und führen X-Server
- Jack führt eine Anwendung, 'AwesomeApp', die eine GUI in einem X-Fenster öffnet
- Jim läuft eine andere Instanz dieser Anwendung zu öffnen seine eigene GUI-Fenster
- Nun läuft Jack eine Supervisor-Anwendung, die mit dem Prozess kommunizieren wird das erste Fenster (zB ‚AwesomeApp‘), weil es HIS Instanz von ‚AwesomeApp‘ besitzen
- Wie kann seine Instanz der Supervisor finden, welche Instanz von ‚AwesomeApp‘ Fenster ist sein eigenes?
aaaahhhh ... suchen sie nach oben auf einer Per-User-Basis ja, das funktionieren könnte. Solange ich die Nutzer sagt, dass sie nicht mit dem gleichen Benutzerkonto aus zwei verschiedenen Orten anmelden können.
Lösung
Sie können mit pgrep die Prozess-ID von Jacks Instanz von AwesomeApp zu bekommen:
pgrep -u Jack AwesomeApp
Also, wenn Sie die Supervisor-Anwendung von einem Shell-Skript starten, können Sie so etwas wie die folgenden tun könnten:
AWESOME_ID=`pgrep -u $USER AwesomeApp 2>/dev/null`
# run the supervisor application and pass the process id as the argument
supervisor $AWESOME_ID
Alternativ, wenn Sie nicht wollen, externe Programme wie pgrep verwenden oder ps , Sie können immer versuchen, für den Prozess der Suche in / proc direkt.