0

select/ [1]的手册页pselect以及这篇 LWN 文章 [2] 明确提到对库函数的调用pselect不会修改 timeout 参数,而select调用可能会根据实现而有所不同。LWN 文章提到系统调用pselect确实修改了超时,并且库函数对调用者隐藏了它。

为什么pselect指定库方法不修改超时参数?知道是否有时间返回的定时方法似乎是一个有用的功能。

例如,我想等待某个 timespec 来接收 X 个字节。我可以实现一个循环来调用pselect等待数据,累积读取的任何数据,累积等待所花费的时间,然后根据是否读取了足够的字节或是否经过了足够的时间来决定是否再次循环。由于pselect没有用剩余时间修改超时参数,我将不得不调用gettimeofday来计算剩余时间窗口。

[1] http://man7.org/linux/man-pages/man2/select.2.html

[2] https://lwn.net/Articles/176911/

4

0 回答 0