TEMP_FAILURE_RETRY

来源:互联网 发布:适用于gal16v8d编程器 编辑:程序博客网 时间:2024/06/03 15:49

TEMP_FAILURE_RETRY 宏定义如下:

<pre name="code" class="cpp">#define TEMP_FAILURE_RETRY(expression) \  (__extension__\   ({ long int __result;\       do __result = (long int)(expression);\       while(__result == -1L&& errno == EINTR);\       __result;})\#endif

用于忽略系统中断造成的错误。常用于系统调用。

使用例子如下:

int accept(struct sockaddr_in *addr) { socklen_t len = sizeof(struct sockaddr_in); bzero(addr, sizeof(struct sockaddr_in)); struct epoll_event ev; int rc = epoll_wait(kdpfd, &ev, 1, 2000);if(1 == rc && (ev.events & EPOLLIN))    return TEMP_FAILURE_RETRY(::accept(sock, (struct sockaddr*)addr, &len)); return -1; }

这里是接受连接时,忽略系统中断造成的错误。


0 0