Eu tenho um script que manipula o windows usando wmctrl
.
Funciona basicamente, mas há uma condição de corrida. Quando um programa arbitrário é iniciado, preciso determinar seu ID de janela X. A versão ingênua é basicamente
wmctl -l | cut -d ' ' -f 1 >before
do
wmctl -l | cut -d ' ' -f 1 >after
until diff before after reveals a new line
O script bash contendo a lógica acima conhece o PID do processo filho que foi lançado. O processo filho se bifurca, o neto cria um ID de janela X e a criança morre.
Eu tenho o PID da criança e o ID da janela X da janela do neto candidato. Eu não tenho os PIDs de nenhum processo intermediário.
Não consigo sincronizar a criação de janelas ou modificar o próprio programa filho, portanto, para evitar a condição de corrida, preciso verificar se o ID da janela candidato X é derivado do processo filho now-dead. Como faço isso?