есть ли в Xlib библиотечный вызов для идентификатора процесса, связанного с окном?

цель: собрать информацию о пользовательской интерактивной программе в приложении "Отслеживание".

самый эффективный способ - через процесс ID. единственный способ, который я могу придумать, это получить Xlib Window связанный процесс ID, есть ли другие способы обойти это?

просматривая документацию и исходный код, не знаю, что такое атрибут ID процесса, связанного с Windows, возможно, Xlib не сохраняет PID, или сохраняет?

неэффективное решение - через атрибут имени Window.


person Error    schedule 30.06.2017    source источник


Ответы (2)


Xlib не хранит идентификаторы процессов — он был разработан для работы в различных ОС с различными абстракциями процессов и в сетях, где pid на одной машине не очень полезен на другой машине.

Но поскольку большинство X-приложений сегодня запускаются на Unix-подобных машинах и отображаются локально, а не по сети, многие современные инструментальные средства приняли соглашение о сохранении идентификатора процесса в свойстве окна этого приложения. См. раздел _NET_WM_PID документа Расширенные подсказки оконного менеджера для получения подробной информации.

person alanc    schedule 01.07.2017

X-сервер не имеет этой информации. На самом деле может даже не быть доступного PID — клиенты могут подключаться к X-серверу по сети.

Если все, что вам нужно сделать, это определить, какая программа используется, вы можете посмотреть файл WM_CLASS свойство окна. Это свойство содержит пару строк, которые используются для идентификации окна диспетчером окон, и обычно включает имя приложения.

person Community    schedule 30.06.2017