出现Fatal IO error 11 (资源暂时不可用) on X server :0.0.的可能原因及解决方案
我在使用python的过程当中发现了这个有这样的错误,后来看了下面这篇文档才知道原因所在。
最近在编写一个局域网的聊天工具,在编写客户端时,我把界面部分和事件处理函数写好后,准备再开一个线程用于接收服务器端发来的数据报,根据数据报的类型来调用相应的子模块。我用的是gtk+写的界面,由于两个线程都涉及到界面的问题,并且我并没有考虑同步的问题,所以导致了标题中所说的问题。
我的数据接收模块(单独的一个线程)的大致内容如下:
while ( RecvInfo(datagram, &size_datagram) ){
/* 提取报文头 */
struct ConnProto *ptr = (struct ConnProto *)pData;
pconn = *ptr;
if (pconn.type == 0) {
// 当前登录成功,下载用户列表
}else if (pconn.type == -1) {
// 当前用户已登录,先下线
gchar str[100] = "系统提示:[当前用户已登录,请先下线]";
message_box(str, GTK_MESSAGE_ERROR);
}else if (pconn.type == -2) {
// 当前用户不存在,先注册
}else if (pconn.type == -3) {
// 当前用户密码错误
}else if (pconn.type == 10) {
// 有新用户上线
}else if (pconn.type == 11) {
// 注册成功
}else if (pconn.type == -11) {
// 当前用户已存在
}else if (pconn.type ==2) {
// 私聊处理
}else if (pconn.type == 3) {
// 群聊处理
}else if (pconn.type == 4) {
// 退出处理
}else {
// 其他处理
gchar str[100] = "系统提示:[当前有不识别的命令]";
message_box(str, GTK_MESSAGE_ERROR);
}
}
其中,message_box ()函数涉及到界面的问题,就是一个消息框的界面。刚开始的时候,while循环中没有放置sleep()函数(你可能会有疑问为什么放置这个函数,其实我的接收数据的函数RecvInfo () 函数还没有写,我只是用一个空函数代替,所以如果不放置sleep ()的话,循环速度就会太快),出现的问题如下:
chat: Fatal IO error 11 (资源暂时不可用) on X server :0.0.
当在 while ()循环中加入 sleep (2)时,出现的问题如下:
The program 'chat' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadIDChoice (invalid resource ID chosen for this connection)'.
(Details: serial 761 error_code 14 request_code 144 minor_code 2)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
在网上搜了一下,说是由于两个线程抢占GUI资源导致的,去除其中一个线程中的控件句柄,说白了就是只能有一个线程来画界面。
实际上,在gtk+程序中使用线程的话,不能直接使用 linux 中的 pthread 了,而应该用 gtk+ 中提供的线程函数。关于 gtk+ 中使用多线程的方法,详见另一篇文章。
出现Fatal IO error 11 (资源暂时不可用) on X server :0.0.的可能原因及解决方案的更多相关文章
- 在VMware8.0.4安装centos6.3出现蓝屏,显示“anaconda: Fatal IO error 104 (Connection reset by peer) on X server :1.0. install exited abnormally [1/1]”?
解决方案:在创建虚拟机时选择“自定义(高级)”,然后点击“下一步”,在弹出的对话框中,在硬件兼容性该项选择 Workstation6.5-7.x.如果创建虚拟机时选择“标准”,默认的硬件兼容性将是Wo ...
- Ubuntu 解决E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
今天想在ubuntu上配置nodejs的环境.结果用apt install安装软件时出现报错. $ sudo apt-get update 会得到下面错误提示: E: 无法获得锁 /var/lib/a ...
- 解决问题E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录,
在用sudo apt-get install kmymoney2安装软件kmymoney2时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get但进程没有结束,结果终端提示:“E: 无法获得锁 ...
- 【Linux/Ubuntu学习 7】E: 无法获得锁 /var/lib/dpkg/lock – open (11: 资源暂时不可用) E: 无法锁定管理目录
在用sudo apt-get install 安装软件时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get但进程没有结束,结果终端提示 :“E: 无法获得锁 /var/lib/dpkg/lo ...
- [转]Ubuntu中无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
sudo apt-get install git E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/ ...
- ubuntu 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
在用sudo apt-get install kmymoney2安装软件kmymoney2时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get但进程没有结束,结果终端提示:"E: ...
- [解决问题] E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? 解决办法: 1.终端输 ...
- E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)
1 错误描述 youhaidong@youhaidong:~$ sudo apt-get update E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂 ...
- 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ubuntu 安装vim 及遇到的错误处理
今天,处理完问题,闲来无事,打算在虚拟机中的Ubuntu中练习shell脚本编写. 无奈,虚拟机系统所装的只有vi,这个编辑软件对于我们来说还是比较不习惯的,所以打算安装vim.好了,闲言少叙. 安装 ...
随机推荐
- 《hanoi(汉诺塔)问题》求解
//Hanoi(汉诺)塔问题.这是一个古典的数学问题,用递归方法求解.问题如下: /* 古代有一个梵塔,塔内有3个座A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上. 有一个老和 ...
- hdu1505 dp
//Accepted 5196 KB 109 ms //类似hdu1506 //输入数据的格式没有明确的限制 //可能出现以下情况 //5 5 //R //F //F F F //F F F F F ...
- Oracle之ROW_NUMBER() OVER函数
语法:ROW_NUMBER() OVER(ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的select ACD_ID,ROW_NUMBE ...
- iOS开发之修改动画对象的元素属性
步骤:1.使用single view application创建新的项目 2.在.h文件中使用UIimageview创建两个图片实例对象,使用UIDynamicAnimator创建动画对象 3.在.m ...
- 学军NOIP2016模拟赛1
GTMD这么水的一套题没有AK T1:妥妥的二分答案,贪心check. T2:问题可以转化为最长上升(还是下降我记不住了)子序列. T3:发现点被覆盖上的顺序是一定的.求出这个顺序,第一个操作在线段树 ...
- CRM客户关系管理系统(十三)
---客户资料添加 1.事件流程:
- Android Priority Job Queue (Job Manager):线程任务的容错重启机制(二)
Android Priority Job Queue (Job Manager):线程任务的容错重启机制(二) 附录文章4简单介绍了如何启动一个后台线程任务,Android Priority J ...
- 制作0.5px像素的细条
<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name=& ...
- 四则运算<3>单元测试
经过分析图一的结果正确,因为输出到文件是为了打印,不要求在线答题功能,因此为实现答题功能. 经过分析,结果正确,满足了选择要求. 选择这六组测试用例的原因是这六组用例将有无乘数法,有无括号,有无负数, ...
- 【转】互联网全站HTTPS的时代已经到来
原文地址:http://blog.csdn.net/luocn99/article/details/39777707 前言 我目前正在从事HTTPS方面的性能优化工作.在HTTPS项目的开展过程中明显 ...