Linux中的C 流界面

C++ Stream interface in Linux

本文关键字:界面 中的 Linux      更新时间:2023-10-16

我在C 中有一个程序,该程序运行了这样的循环,使用我无法访问的专有驱动程序从视频设备中抓住帧。

while(true) {
  mybuf = getNextFrame(); // blocks
}

我想使用其他编程语言构建一些逻辑,因此我正在考虑使用以下界面。(我只需要Linux支持)我当时正在考虑在某个地方放一个文件,例如: /my/video/device每当我在上面打电话给read()时,它都会给我当前的帧。另外,如果我再次致电read(),我希望它阻止直到下一帧可用并为我返回。另外,如果我不打开()一段时间,我不希望介于两者之间的框架中。

最好的方法是什么?我尝试使用Fuse实现文件系统,但是如果它是常规文件,它试图在文件中寻找,并且只能读取到我为文件指定的大小。然后,我制作了一个角色设备,但它永远不会称我的read()功能,而是说拒绝了...

我正在考虑尝试Cuse或类似的东西。我是否使事情复杂化?我只需要能够与不断来自我的C 循环的帧流一起工作,但是我想用另一种语言(例如Python或Go)来解析它们。我也不想将我的C 代码的汇编与GO或Python混合,我希望两者完全分开。我认为两者之间拥有某种文件API会使事情变得更容易。处理此问题的好方法是什么?

我将使用名为管道编写程序。要记住的一件事是,如果在写入中间的接收端断开连接,服务器将收到一个sigpipe信号,除非处理或阻止该服务器的服务器终止。