易截截图软件、单文件、免安装、纯绿色、仅160KB

LINUX SOCKET AIO 问题

写了代码,使用ace_proactor, 原来windows跑得非常漂亮,来到linux就时不时不工作,然后加asynce_connector后,发现完成不能工作,async_stream_write后,发现卡在那里,根本发不出去,多次分析后,发现,原来之前有aio_read没有完成,aio_write的请求就block那里了,write这个操作竟然一定要等前的aio_read完成之后,才可以执行。 证据如下:
1.卡住的aio_write 会成上完成,如果socket被对方关闭。
2.在aio_read之前设置socket的模式为nonblocking, 一时write操作出现,aio_read 马上完成,并返回错误码 EAGAIN,然后aio_write的请求也给完成了。
3.socket的模式在ace和IBM有关的aio文档中给强调,must be ing blocking mode.
天啊!
尝试了在aio_write之前如果有读操作,使用aio_cancel进行cancel操作,不行,于是设置了nonblocking模式然后而cancel,还是没有任何反应。
看来LINUX的AIO实现真是够烂的,对于SOCKET操作的实现完全失败!
假设以下情形:
1.server 广播数据给客户端(调用aio_write),并且发送了一条期望得到客户端响应的指令(aio_read),结果客户端长期没有响应,这时我想再发一条通知数据给客户端(调用aio_write),这个发送的请求就给内核里block住在那里,一直发不出去,因为它要等前面一个aio_read完成, 直到客户端响应了或者是断线了,这第二个aio_write才会完成。
郁闷吧。并且你无法取消这种状态,这个socket 就停在那里了。。。。
对于server端这个还好。
如果你的server端又需要和其它server作联系的时候,你就麻烦了,完全不可预测。


相关文档:

linux pppoe

手头有个ep9315的板,今天突然想起跑一下adsl上网。晚上回来就开始搞。
从10点到现在,终于能够跑起来。
给大家借鉴一下。
1.编译内核,把ppp的那些选项选上。 (我用2.6.8.1的kernel,cirrus 的patch)
2.libpcap-0.9.1 这个包是pppd需要的。
./configure CC=arm-linux-gcc CFLAGS=-msoft-float --target=arm-linu ......

linux 硬链接 软链接

linux中关于链接类型分为硬链接和软链接
  硬链接指令 ln  文件  链接名称
  软链接指令 ln -s 文件  链接名称
共同点:
  都可以通过链接名称去访问被链接的文件
不同点:
  硬链接会产生一个和源文件相同的文件 不论大小和属性
  删除源文件不会对链接文件产生影响
&nbs ......

oracle RAC 9.2.0.4 for linux x86升级到9.2.0.8

oracle RAC 9.2.0.4升级到9.2.0.8
   操作系统平台:Red Hat Enterprise Linux AS release 3
   准备工作:
            1. Check Tablespace Sizes and Set Parameter Values
            
   &nb ......

最简单的窗口(Gtk+ for Linux)

在Linux下使用Gtk+实现最简单的GUI窗口,源代码如下:
//SimpleGui.c
#include <gtk/gtk.h>
int main(int argc,char *argv[])
{
  //定义一个widget(Gtk+构件),这里定义的是一个窗口构件
  GtkWidget *wnd;
  //Gtk+2.0的初始化命令行参数,每一个Gtk+程序都要有这句话
  gtk_init(& ......

Linux 设备驱动程序庖丁解牛之一

写在前面的话
       Linux Device Driver 尝试着看了好几遍,总感觉理解不够透彻,很多东西经不住问,
才深深的意识到,要走进浩瀚无边的 Linux 世界,并不是一蹴而就的事情。我决心从理论到
实践,再一次走一边这本书,同时记录下自己的心得,和大家一起分享,一起讨论,一起进
步。
&nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号