IT-словарь › Программирование › _NET_WM_PID

_NET_WM_PID

Программирование Svenska → Обновлено: 2026-10-18

Свойство EWMH, в которое программа записывает собственный PID, чтобы оконный менеджер мог убить нужный процесс, если тот не отвечает на ping, — самообъявление, которое никто не проверяет.

X-сервер почти ничего не знает о процессе за соединением, а XKillClient лишь закрывает соединение: зависшая программа остаётся жить без окон. Поэтому в 2000 году EWMH добавил в свойства окна верхнего уровня _NET_WM_PID — число CARDINAL с PID. Менеджер, решившийся на SIGKILL после оставшегося без ответа _NET_WM_PING, читает его, предварительно сверив WM_CLIENT_MACHINE со своим именем хоста. GTK, Qt и xterm ставят его сами, Xt и Motif — нет, потому диалог принудительного завершения в KWin и GNOME Shell порой предложить нечего. Тот же поиск делают xprop _NET_WM_PID, xdotool getwindowpid и wmctrl -lp.

Свойство — заявление, а не факт. Программа может записать что угодно, и даже честная ошибается: в контейнере или Flatpak процесс живёт в своём пространстве PID, и его номер не совпадает с видимым менеджеру. Настоящая личность известна серверу: для клиентов на Unix-сокете ядро знает PID пира, а X-Resource 1.2 (2011) позволяет спросить об этом сервер, что и делает xrestop. Wayland сделал это нормой: композитор получает PID из сокета при соединении, и записать свой клиент не может.

Источники EWMH
← Назад к словарю