我刚刚遇到了Linux的select()
函数(或者它是Unix?)操作系统。看起来它可以实现我需要做的事情。
我有一个Linux进程(在Debian上),在其他3个进程之间有IPC(进程间通信)。其中2个是串行端口流,另一个是命名管道。
我的流程需要从每个流中读取数据并做出相应的反应(它是这三个流程之间的代理)。没有命令来自每个进程的数据(一个可以说话,然后另一个沉默一段时间)。
所以我想有一个主循环只使用select()
来监听所有流(超时永远不会)。那样select可以通知我什么时候/如果一个流写入我的进程,哪个流正在通话,然后我可以做出相应的反应。
选择是如何工作的?这个设计是否正常以及如何处理3个流,它们的行为是动态的并且不可预测(就何时将数据写入流而言)?
答案 0 :(得分:0)
是的,这正是select
的目的:复用多个输入流并检测哪些数据已准备好从中读取。