我正在 Linux 中创建一个简单的设备驱动程序,它应该通过串行读取一些数据,解析它,构造它,然后将其流式传输到任何需要数据的进程。
我认为实现这一目标的最佳方法是使用管道广播数据。
在 Linux 中,将进程 A 的输出通过管道传输到其他 N 个进程的输入的最佳方式是什么?
谢谢!
最佳答案
我会让驱动程序写入内存中的循环缓冲区,并使用对应的 API 来发现缓冲区的地址并将数据从缓冲区读取到消费者的私有(private)内存中。在我的实现中,慢速消费者可能无法接收到所有数据,但这可以通过引入缓存快速消费来将大量数据排队以供慢速消费者恢复来解决。
关于Linux 一对多复用器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12786911/