c/c++语言开发共享便携式C如何在从管道读取时向前寻找

由于fseek()在管道上不起作用,有哪些方法可以模拟前进? 天真的方法是使用fread()并将读取的内容丢弃到内存缓冲区中。 为了避免巨大的缓冲区,你只需要使用缓冲区的一部分就可以反复使用相同的缓冲区。

但这是唯一的方法吗? 有没有另一种方法可以避免缓冲区和潜在的多重读取?

    是的,这是唯一的方法。 我会在1k-8k左右使用一个缓冲区。 随着读取的系统调用开销小得多,将会发挥更大的作用,您将从缓存中驱逐有用的数据。

    寻求在管道上没有意义,因为输入是动态生成的(不存储在磁盘上)。 管道没有实现lseek内核系统调用。

    还要记住,管道本质上是一个有限的固定大小的生产者 – 消费者缓冲区。 当它变满时,生产者将被暂停,直到消费者读取最旧的数据。

      以上就是c/c++开发分享便携式C如何在从管道读取时向前寻找相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560821.html

      (0)
      上一篇 2021年1月28日
      下一篇 2021年1月28日

      精彩推荐