Как отслеживать связанные окна в X11?

StackOverflow https://stackoverflow.com/questions/60967

  •  09-06-2019
  •  | 
  •  

Вопрос

К сожалению, мой вопрос не так прост, как отслеживание двух окон, созданных одним и тем же процессом.

Вот что у меня есть:

  • Два пользователя, Джек и Джим, удаленно входят в одну и ту же систему Unix и запускают X-серверы.
  • Джек запускает приложение «AwesomeApp», которое открывает графический интерфейс в окне X.
  • Джим запускает другой экземпляр этого приложения, открывая собственное окно графического интерфейса.
  • Теперь Джек запускает приложение-супервизор, которое будет взаимодействовать с процессом, владеющим первым окном (например, «AwesomeApp»), поскольку это ЕГО экземпляр «AwesomeApp».
  • Как его экземпляр супервизора может определить, какой экземпляр окна «AwesomeApp» является его собственным?

Аааааа... глядя на каждого пользователя, да, это может сработать.Пока я говорю пользователям, что они не могут войти в систему с одной и той же учетной записью из двух разных мест.

Это было полезно?

Решение

Вы можете использовать пгреп чтобы получить идентификатор процесса экземпляра AwesomeApp Джека:

pgrep -u Jack AwesomeApp


Итак, если вы запускаете приложение-супервизор из сценария оболочки, вы можете сделать что-то вроде следующего:

AWESOME_ID=`pgrep -u $USER AwesomeApp 2>/dev/null`

# run the supervisor application and pass the process id as the argument
supervisor $AWESOME_ID


Альтернативно, если вы не хотите использовать внешние программы, такие как pgrep или пс, вы всегда можете попробовать поискать процесс в /проц напрямую.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top