Can Select()用于检测和识别多个流输入

时间:2015-04-30 06:50:48

标签: c unix io serial-port

我刚刚遇到了Linux的select()函数(或者它是Unix?)操作系统。看起来它可以实现我需要做的事情。

我有一个Linux进程(在Debian上),在其他3个进程之间有IPC(进程间通信)。其中2个是串行端口流,另一个是命名管道。

我的流程需要从每个流中读取数据并做出相应的反应(它是这三个流程之间的代理)。没有命令来自每个进程的数据(一个可以说话,然后另一个沉默一段时间)。

所以我想有一个主循环只使用select()来监听所​​有流(超时永远不会)。那样select可以通知我什么时候/如果一个流写入我的进程,哪个流正在通话,然后我可以做出相应的反应。

选择是如何工作的?这个设计是否正常以及如何处理3个流,它们的行为是动态的并且不可预测(就何时将数据写入流而言)?

1 个答案:

答案 0 :(得分:0)

是的,这正是select的目的:复用多个输入流并检测哪些数据已准备好从中读取。