Вопрос
К сожалению, мой вопрос не так прост, как отслеживание двух окон, созданных одним и тем же процессом.
Вот что у меня есть:
- Два пользователя, Джек и Джим, удаленно входят в одну и ту же систему 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 или пс, вы всегда можете попробовать поискать процесс в /проц напрямую.
Не связан с StackOverflow