我有两个进程在通信。第一个进程将数据写入管道或fifo(我尝试过两种方式),第二个进程读取其中的数据。目前发送的数据是六个浮点数,直接来自传感器,因此需要频繁上传(10Hz)。
问题在于读取数据的进程比较“沉重”,可能无法快速读取。管道会被填满,读取将被延迟到程序结束。
由于不能容忍这样的延迟,我可以在写入部分检测管道是否已满(在这种情况下,如果我理解得不对,请纠正我,它将等待有足够的空间来写入数据)。如果这种检测是可能的,那么我如何清除管道的内容,使读取部分可以立即接收到最新的数据,而不必经过整个充满旧数据的管道?
简而言之,是否有一种方法可以清空管道的数据(无需关闭和重新打开管道将是一个优点)。
非常感谢。
问题在于读取数据的进程比较“沉重”,可能无法快速读取。管道会被填满,读取将被延迟到程序结束。
由于不能容忍这样的延迟,我可以在写入部分检测管道是否已满(在这种情况下,如果我理解得不对,请纠正我,它将等待有足够的空间来写入数据)。如果这种检测是可能的,那么我如何清除管道的内容,使读取部分可以立即接收到最新的数据,而不必经过整个充满旧数据的管道?
简而言之,是否有一种方法可以清空管道的数据(无需关闭和重新打开管道将是一个优点)。
非常感谢。
read()
读取。 - mf_read()
才能获取最新数据,并且这会造成延迟(实际上就像我现在正在做的那样,使用fgets()
)。 - wrousseauwrite()
放入管道中的内容,以便它不填充不必要的内容。 - mf_