帮助:达到的最大客户端数 – 分段错误

前端之家收集整理的这篇文章主要介绍了帮助:达到的最大客户端数 – 分段错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想模拟许多重要的新闻事件.我通过使用XTestFakeKeyEvent找到了一个解决方案,但是当我模拟超过210次时,我的程序提出了“达到的最大客户端数”分段错误.我不知道如何解决这个问题.

我的代码在这里:

@H_301_7@#include dio.h> #define PRESS_UP 0 #define PRESS_DOWN 1 #define PRESS_LEFT 2 #define PRESS_RIGHT 3 #define PRESS_ENTER 4 #define PRESS_ESC 5 #define PRESS_HOME 6 Display *display; unsigned int keycode; int press(int key){ display = XOpenDisplay(NULL); if(key == PRESS_UP) keycode = XKeysymToKeycode(display,XK_Up); else if(key == PRESS_DOWN) keycode = XKeysymToKeycode(display,XK_Down); else if(key == PRESS_LEFT) keycode = XKeysymToKeycode(display,XK_Left); else if(key == PRESS_RIGHT) keycode = XKeysymToKeycode(display,XK_Right); else if(key == PRESS_ENTER) keycode = XKeysymToKeycode(display,XK_Return); else if(key == PRESS_ESC) keycode = XKeysymToKeycode(display,XK_Escape); else if(key == PRESS_HOME) keycode = XKeysymToKeycode(display,XK_Home); XTestFakeKeyEvent(display,keycode,True,0); XTestFakeKeyEvent(display,False,0); XFlush(display); return 0; } int main(int argc,char *argv[]){ int count = 0; while (count < 500){ press(PRESS_UP); printf("count =%d\n",count); count ++; } }

输出

@H_301_7@$gcc -lXtst -lX11 Util_KeyPressSimulator.c $./a.out count =0 ^[[Acount =1 ^[[Acount =2 ... ^[[Acount =208 ^[[Acount =209 ^[[Acount =210 ^[[AMaximum number of clients reachedSegmentation fault

有人请帮忙,谢谢.

最佳答案
你在每次迭代时都在进行XOpenDisplay而没有匹配的XCloseDisplay.考虑打开显示一次,在main()中,在循环外部,并在退出之前关闭它.

猜你在找的Linux相关文章