我遇到了一种情况,我可能想“跳过”管道或套接字中的数据以进行处理。我当然可以将数据读取()到缓冲区中,然后将其丢弃,但是有没有更有效的方法?也许诸如sendfile之类的东西可以与不可映射的源一起使用?
答案 0 :(得分:4)
您需要read
数据。您可以根据自己的需要进行操作,因此可以跳过零件或其他内容。
如果不读取数据,数据将停留在读取缓冲区中。建议将其从缓冲区中取出的方法是读取它。
话虽如此,如果您阅读表明所有后续数据将无用的内容,则可以关闭连接并完成连接。
我不确定您对“高效”的含义,因为从缓冲区读取可能不是代码中的性能瓶颈。