libevent:如果相关套接字被本地程序关闭,是否可以触发事件

时间:2013-06-20 13:16:40

标签: network-programming libevent

如果我为accept()返回的连接套接字添加一个事件,如下所示

    event_set(&conn_ev, connfd, EV_READ|EV_PERSIST, on_recv, NULL);
    event_base_set(base, &conn_ev);
    event_add(&conn_ev, NULL);

如果在某个时候,本地程序(不是对等方)关闭套接字,conn_ev会被触发吗? 如果是这样,如何检测事件是否是由于套接字的关闭?

是recv(connfd,..)返回-1而errno是设置EBAD还是其他任何情况?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果套接字被另一端很好地关闭,所有套接字都被标记为可读,read返回零。收到错误后,会将其标记为已读或可写,readwrite返回-1

参见例如国家表的socket(7) manual page