我创建了一个从文件中获取输入的虚拟文件驱动程序。此输入在内部保存(除了发生的其他事情)并在读取文件访问时写出。
现在,当我向此文件写入空字符串或数据块时,似乎未调用写入处理程序。乍一看没有意义,但第二眼就是这样。看看
echo -n "" > somefile
这会清除文件的内容。我需要相同的虚拟文件,因为我想告诉司机“嘿,现在没有更多的数据给你了。”
我是否有机会使用空信息调用writehandler?
发送某个转义序列不是一个选项,因为数据是二进制的,我无法指定一个值被视为“空”。
答案 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