Как отслеживать связанные окна в X11? - PullRequest
1 голос
/ 14 сентября 2008

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

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

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

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

1 Ответ

1 голос
/ 14 сентября 2008

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

pgrep -u Jack AwesomeApp


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

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 или ps , вы всегда можете попробовать поискать процесс непосредственно в / proc .

...