从管道读取时,便携式C如何向前搜索

| 由于ѭ0在管道上不起作用,存在哪些模拟向前搜索的方法?天真的方法是使用ѭ1并丢弃读入内存缓冲区的内容。为了避免巨大的缓冲区,您将一遍又一遍地使用相同的缓冲区,而最终读取仅使用缓冲区的一部分。 但这是唯一的方法吗?还有另一种方法可以避免缓冲区和可能的多次读取吗?     
已邀请:
是的,这是唯一的方法。我会在1k-8k左右的地方使用缓冲区。较小的读取会占用系统调用开销,较大的则会从缓存中逐出有用的数据。     
在管道上进行搜索没有意义,因为输入是动态产生的(不存储在磁盘上)。 pipes2ѭ内核系统调用未针对管道实施。 还应记住,管道本质上是有限的固定大小的生产者-消费者缓冲区。当数据满时,生产者将暂停,直到消费者读取最早的数据。     

要回复问题请先登录注册