繁体   English   中英

让系统调用select()块,直到套接字读取某些内容

[英]let the system call `select()` block until a socket gets something to read

select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)的手册页中说:

If timeout is a null pointer, the select blocks indefinitely.

无限期意味着一个具有任意长度的周期吗?

让线程在select()处阻塞直到套接字获取一些数据好吗? 如果是这样,*超时应该是什么?

“无限地”不是任意的,它是永远的。 如果timeout指针为NULL ,则select将永远阻塞,或者直到其中一组中的文件描述符之一“就绪”为止。

不,“永远”等待不是一个好主意...如果拔下网络电缆,您的应用程序将冻结。 您应该设置一个合理的超时时间(可能是几秒钟),以便万一数据无法到达就可以安全退出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM