gpt4 book ai didi

linux - poll() 系统调用中 POLLIN 和 POLLPRI 的区别

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:20:46 24 4
gpt4 key购买 nike

poll() 的文档没有对此进行详细解释。在对 fd 进行轮询时,什么时候应该使用 POLLIN 以及什么时候应该使用 POLLPRI?任何见解都会有用。

最佳答案

poll() 文档中有一些说明。

POLLIN 有数据要读取。POLLPRI 有紧急数据需要读取。

如果只使用POLLIN,poll()会在有数据或紧急数据要读取时返回。如果只使用POLLPRI,poll()只有在有紧急数据需要读取时才会返回,而忽略正常数据。

什么是紧急数据?就像tcp的带外数据。在 TCP 帧头中,有一个名为 urg_data 的标志。 urg_data 表示此帧具有更高的传递优先级。一旦内核收到一个 urg_data 帧,它就会设置一个 POLLPRI 标志!看下面的代码:

...
if (tp->urg_data & TCP_URG_VALID)
mask |= POLLPRI;
....
return mask;

关于linux - poll() 系统调用中 POLLIN 和 POLLPRI 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15422919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com