我正在Linux / X上编写一个程序来杀死鼠标所指向的应用程序。
当它正在运行时,我启动xterm并执行“surf duckdcukgo.com&”或“leafpad&”。然后我用我的程序使用Alt + Escape杀死xterm,xterm和从它内部启动的应用程序都死了。只有xterm应该死掉。如果我发布“mupdf some.pdf&”它按预期工作。我不知道启动的应用程序的选择如何影响问题。有时候,“冲浪”最终还是需要几秒钟。
XKillClient还有什么可以添加的吗?我应该使用其他东西而不是XKillClient吗?
这是代码。
#include <X11/keysym.h>
#include <X11/Xlib.h>
int main(void)
{
Display *display;
XEvent event;
Window root;
signed int trash;
Window wtrash;
Window wfocused = 0;
display = XOpenDisplay(NULL);
if(display == NULL)
{
return 1;
}
root = DefaultRootWindow(display);
XGrabKey(display, XKeysymToKeycode(display, XK_Escape), Mod1Mask, root, True, GrabModeAsync, GrabModeAsync);
while(1)
{
XNextEvent(display, &event);
if(event.type == KeyPress)
{
if(event.xkey.keycode == XKeysymToKeycode(display, XK_Escape))
{
XQueryPointer(display, root, &wtrash, &wfocused, &trash, &trash, &trash, &trash, (unsigned int*)&trash);
XKillClient(display, wfocused);
}
}
}
}