如何在虚拟文件中写入任何内容

时间:2016-05-23 09:32:39

标签: linux procfs

我创建了一个从文件中获取输入的虚拟文件驱动程序。此输入在内部保存(除了发生的其他事情)并在读取文件访问时写出。

现在,当我向此文件写入空字符串或数据块时,似乎未调用写入处理程序。乍一看没有意义,但第二眼就是这样。看看

echo -n "" > somefile

这会清除文件的内容。我需要相同的虚拟文件,因为我想告诉司机“嘿,现在没有更多的数据给你了。”

我是否有机会使用空信息调用writehandler?

发送某个转义序列不是一个选项,因为数据是二进制的,我无法指定一个值被视为“空”。

1 个答案:

答案 0 :(得分:2)

首先,在/proc/中添加二进制伪文件可能不太好。您是否考虑将它们设为 textual ,就像/proc/中的大多数伪文件一样?解析一些文本伪文件的额外开销通常可以忽略不计(并且系统管理员非常喜欢/proc/中的文本伪文件可以读取而没有太多有害的副作用)

然后你可以使用ftruncate(2)系统调用(但我不知道它是否适用于/proc/伪文件)。然后,您将使用truncate(1)命令,如:

truncate /proc/your_weird_pseudo_file

也许这可能不起作用(我不知道 procfs 文件系统是否支持)

或者(但这很难看),提供另一个伪文件来清除某些状态,所以你的用户会这样做:

echo 1 > /proc/clear_your_weird_state