Linux:FIFO文件和设备驱动程序之间的东西

时间:2015-06-27 21:08:26

标签: linux driver device fifo

我有一个linux守护进程,它正在生成一些数据。该守护进程有时会更新该数据。为简单起见,我们假设只有一个字节。现在我希望其他进程可以访问该数据,最简单的方法(至少对我来说)这样做就是拥有某种文件介体。

问题是我想从多个进程(或没有)和守护进程异步读取数据以更新该文件的内容。

是否可以有一个文件,从一个进程打开以进行写入以及从一个或多个进程读取?是否有一些特殊的文件类型,是为此目的而制作的?

P.P。我正在阅读关于FIFO文件和设备驱动程序,但我不确定,应该使用它们。

1 个答案:

答案 0 :(得分:0)

什么?您的要求没有充分说明。

首先,什么会阻止您的读者在更新数据时看到数据?

可能采用的是咨询文件锁定(支持共享和独占模式)。阅读关于flock的信息。

另一个标准解决方案是创建一个新文件,然后将其重命名为(2)旧文件。该操作是原子的。

设法打开旧文件的读者当然会读取您的旧数据,但是您没有提供任何同步,因此无论如何它本身都是有趣的。 (事实上​​即使使用锁也可能足够活泼。)读取进程打开+读取+每次想要获取新数据时关闭文件。

还可以使用hack来查找文件以查看inode上的链接计数。如果为0,则表示文件已删除且存在更新。如果小丑将旧文件硬链接,则会出现问题,因为这会使您错过更新。