我找到的几乎每个教程都告诉我为我的事件循环执行此操作:

XEvent event;

while (true)

{

XNextEvent(display, &event);

switch (event.type)

{

case Expose:

printf("Expose\n");

break;

default:

break;

}

}

但是,单击X关闭程序将导致此消息.

XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0"

after 10 requests (10 known processed) with 0 events remaining.

对我来说,这些例子建议使用无限循环确实很奇怪.这听起来并不自然,我的其他X11程序也不这样做.所以我四处搜寻.我发现了如何捕获窗口关闭事件.

Atom wmDeleteMessage = XInternAtom(mDisplay, "WM_DELETE_WINDOW", False);

XSetWMProtocols(display, window, &wmDeleteMessage, 1);

XEvent event;

bool running = true;

while (running)

{

XNextEvent(display, &event);

switch (event.type)

{

case Expose:

printf("Expose\n");

break;

case ClientMessage:

if (event.xclient.data.l[0] == wmDeleteMessage)

running = false;

break;

default:

break;

}

}

这样可行.它退出没有错误.......但我拒绝相信这是做事的正常方式.我的意思是,这是正确退出X11应用程序的唯一方法吗?为了捕捉近距离事件,似乎需要做很多工作.如何制作"正确"的事件循环?为什么近距离事件如此深深地被埋葬?我错过了什么?

Linux关停X11服务,如何优雅地退出X11事件循环?相关推荐

  1. Linux远程桌面服务VNC/XRDP/Xdmcp/SSH+X11转发及其在树莓派上的使用

    Linux下有三大知名的远程桌面服务,即VNC/XRDP/Xdmcp,此外还有一个认知度不那么高的SSH+X11转发服务也是很好用的.下面的介绍中我引入在树莓派上的应用(使用Raspbian Stre ...

  2. linux 退出java,linux kill命令下如何优雅的退出java程序

    实现SignalHandler kill命令常用信号(之后代码会用到):HUP 1 终端断线 INT 2 中断(同 Ctrl + C) QUIT 3 退出(同 Ctrl + \) TERM 15 终止 ...

  3. Linux系统下程序异常如何优雅的退出

    当我们想强制结束一个程序的时候,我们通常会给它发送一个信号然后该进程捕捉到信号,再然后该进程执行一定操作最终被终止.信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应 ...

  4. Linux/ubuntu 服务器开启6010端口-X11服务-ssh连接

    此文首发于我的个人博客:Linux/ubuntu 服务器开启6010端口-X11服务-ssh连接 - zhang0peter的个人博客 晚上在检查我的Linux-ubuntu服务器的端口状况时发现开启 ...

  5. Linux下网络服务的安全设置

    Linux下网络服务的安全设置 Linux操作系统由于其良好的稳定性.健壮性.高效性和安全性.正在成为各种网络服务的理想平台.各种网络应用在Linux系统上部有性能卓越的应用,例如,提供Web服务的A ...

  6. linux 进程与服务

    linux 进程与服务 进程管理 显示系统执行的进程 ps [选项] -a 显示当前终端的所有的进程的信息 -u 以用户的格式显示进程信息 -x 显示后台进程运行的参数-ef 以全格式显示当前所有的进 ...

  7. 基本linux加载图形界面,linux图形界面基本知识(X、X11、Xfree86、Xorg、GNOME、KDE之间的关系)...

    LINUX初学者经常分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系.常常混淆概念,本文以比较易于理解的方式来解释X,X11,XFREE,WM,KDE,GNO ...

  8. go 服务器如何优雅的退出、重启

    go 服务器优雅的退出 与 重启 简介 说明 优雅的退出 完整测试代码 logger.go main.go route.go controller.go 简介 在服务器开发的时候,往往都会有一些关于服 ...

  9. linux下tomcat服务的相关命令

    2019独角兽企业重金招聘Python工程师标准>>> 一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tom ...

最新文章

  1. R语言ggplot2可视化轴标签重叠问题解决实战:修改轴标签字体、轴标签垂直于坐标轴(或者旋转特定角度)
  2. 微软洪小文:制造业是最先享受AI成果的领域
  3. 大数据项目产品选型的五个建议
  4. 如何配置eclipse的安卓SDK下载目录
  5. React开发(191):ant design中inputNumber格式化
  6. c语言中的标准数据类型,C语言中的基本数据类型
  7. php curl json post请求_php post请求发送json对象数据参数
  8. oracle数据库备份和还原
  9. Java基础面试题:AQS组件总结
  10. gatling系列教程(翻译)-第三节(快速开始)
  11. batchplot插件用法_Batchplot设置使用指南,实现批量打印CAD图纸
  12. 硬盘测速工具:Blackmagic Disk Speed Test for Mac
  13. (二)GNSS定位中的卫星轨道位置计算
  14. allure报告的定制化
  15. 【算法设计与分析】(6)算24点问题(回溯法)
  16. 举报两年论文终撤稿!123页PDF实名举报985大学导师学术造假后续来了...
  17. 机器人学:(3)机器人运动学
  18. 各位观众老爷不如点进来随便评论几句QUQ
  19. Android TV开发--HDMI播放器
  20. 最强大脑《多米诺效应》

热门文章

  1. 关于交叉验证的一些说明
  2. pyspider 框架的基本使用
  3. java redis set 过期时间_redis分布式锁自动延长过期时间
  4. 如何下载微信视频号上的视频(另类思路)
  5. 央企招聘:中国大唐集团2023年度公开招聘公告
  6. 单阶段目标检测方法SSD介绍与分析
  7. 上海交大计算机技术管云峰,上海交通大学无线通信研究所
  8. java计算机毕业设计临时停车收费系统源码+系统+mysql数据库+lw文档
  9. 事件分发,事件到底是先到DecorView还是先到Window的?
  10. CVE-2012-1876Microsoft Internet Explorer Col元素远程代码执行漏洞分析