我在 RHEL 6 上运行了一个 Python 2.7 应用程序,它偶尔会挂起。如果我 strace 该应用程序,我会反复收到以下信息:
[pid 180442] select(0, NULL, NULL, NULL, {10, 0}) = 0 (Timeout)
[pid 180442] select(0, NULL, NULL, NULL, {10, 0}) = 0 (Timeout)
这个 select 正在等待什么? 是否有文件句柄隐藏在其中?
答案1
没有文件句柄。男人选择:
int select(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout);
nfds is the highest-numbered file descriptor in any of the three sets, plus 1
readfds、writefds 和 exceptfds 都为空 (NULL)
超时时间为 10 秒。
因此,它只是在等待什么也没发生。