Come posso tenere traccia delle finestre correlate in X11?
-
09-06-2019 - |
Domanda
Sfortunatamente, la mia domanda non è così semplice come tenere traccia di due finestre create dallo stesso processo.
Ecco cosa ho:
- Due utenti, Jack e Jim, hanno effettuato l'accesso in remoto allo stesso sistema Unix ed eseguono server X
- Jack esegue un'applicazione, "AwesomeApp", che apre una GUI in una finestra X
- Jim esegue un'altra istanza di questa applicazione, aprendo la propria finestra della GUI
- Ora, Jack esegue un'applicazione supervisore che comunicherà con il processo proprietario della prima finestra (ad esempio "AwesomeApp") perché è la SUA istanza di "AwesomeApp"
- Come può la sua istanza di supervisore scoprire quale istanza della finestra "AwesomeApp" è la sua?
Aaaahhhh...cercandolo per utente sì, potrebbe funzionare.A patto di dire agli utenti che non possono accedere con lo stesso account utente da due posti diversi.
Soluzione
Puoi usare pgrep per ottenere l'ID del processo dell'istanza di AwesomeApp di Jack:
pgrep -u Jack AwesomeApp
Quindi, se avvii l'applicazione supervisore da uno script di shell, potresti fare qualcosa di simile a quanto segue:
AWESOME_ID=`pgrep -u $USER AwesomeApp 2>/dev/null`
# run the supervisor application and pass the process id as the argument
supervisor $AWESOME_ID
In alternativa, se non vuoi usare programmi esterni come pgrep o p.s, puoi sempre provare a cercare il processo in /proc direttamente.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow