从Linux中的管道或套接字丢弃数据的最佳方法?

时间:2018-08-07 16:26:52

标签: c linux linux-kernel

我遇到了一种情况,我可能想“跳过”管道或套接字中的数据以进行处理。我当然可以将数据读取()到缓冲区中,然后将其丢弃,但是有没有更有效的方法?也许诸如sendfile之类的东西可以与不可映射的源一起使用?

1 个答案:

答案 0 :(得分:4)

您需要read数据。您可以根据自己的需要进行操作,因此可以跳过零件或其他内容。

如果不读取数据,数据将停留在读取缓冲区中。建议将其从缓冲区中取出的方法是读取它。

话虽如此,如果您阅读表明所有后续数据将无用的内容,则可以关闭连接并完成连接。

我不确定您对“高效”的含义,因为从缓冲区读取可能不是代码中的性能瓶颈。