Como acompanho as janelas relacionadas no X11?
-
09-06-2019 - |
Pergunta
Infelizmente, minha pergunta não é tão simples quanto acompanhar duas janelas criadas pelo mesmo processo.
Aqui está o que eu tenho:
- Dois usuários, Jack e Jim, estão logados remotamente no mesmo sistema Unix e executam servidores X
- Jack executa um aplicativo, 'AwesomeApp', que abre uma GUI em uma janela X
- Jim executa outra instância deste aplicativo, abrindo sua própria janela GUI
- Agora, Jack executa um aplicativo supervisor que se comunicará com o processo que possui a primeira janela (por exemplo, 'AwesomeApp') porque é a instância HIS de 'AwesomeApp'
- Como a instância do supervisor pode descobrir qual instância da janela 'AwesomeApp' é sua?
Aaaahhhh ... pesquisando por usuário, sim, isso pode funcionar.Contanto que eu diga aos usuários que eles não podem fazer login com a mesma conta de usuário em dois locais diferentes.
Solução
Você pode usar pgrep para obter o ID do processo da instância AwesomeApp de Jack:
pgrep -u Jack AwesomeApp
Portanto, se você iniciar o aplicativo supervisor a partir de um script de shell, poderá fazer algo como o seguinte:
AWESOME_ID=`pgrep -u $USER AwesomeApp 2>/dev/null`
# run the supervisor application and pass the process id as the argument
supervisor $AWESOME_ID
Alternativamente, se você não quiser usar programas externos como pgrep ou obs:, você sempre pode tentar procurar o processo em /proc diretamente.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow