我有一种情况,我有一个复杂消息的传入流,它们在以简化格式传递给实际处理程序之前需要进行一些处理。控制文件描述符的准备
我想使用一个FIFO文件描述符,一个线程从一端填充它,另一个线程从另一端读取。现在我想要的那种行为:阅读线程正在等待select()
,我想保证在唤醒时有一个完整的包,可以通过调用read()
来读取,即我想避免由于缓冲区大小而导致碎片重新组装(软件包保证低于内核到用户空间的缓冲区传递限制)。
我想知道是否有一种配置FIFO的方式,以便我可以手动定义文件描述符何时准备就绪,即生产者已成功编写完整软件包时,我想要有一个向读取结束(通过文件描述符)发送信号的方式是读取已准备就绪。有没有一种方法可以通过ioctl()
来实现,或者除了提供这种行为的FIFO之外还有一些抽象(在Linux世界中)? (我知道pthread
和条件变量,但我想生产者和消费者之间的耦合被限制到共享文件描述。)