我创build了一个虚拟文件驱动程序,从文件中获取input。 这个input被保存在内部(除了发生的其他事情之外),并被写入读取文件。
现在,当我写一个空string或数据块到这个文件,似乎写处理程序不被调用。 乍一看没有意义,但第二个是确实。 看着
echo -n "" > somefile
这将清除文件的内容。 我需要相同的虚拟文件,因为我想告诉司机“嘿,现在没有更多的数据给你”。
我有机会让写处理程序调用一个空的信息吗?
发送特定的转义序列不是一个选项,因为数据是二进制的,我不能提名一个值作为“空”。
首先,在/proc/
添加二进制伪文件可能是不好的滋味。 你有没有考虑使它们成为文本的 ,就像/proc/
中的大多数伪文件一样? 解析一些文本伪文件的额外开销通常是微不足道的(系统管理员真的喜欢在/proc/
中有文本伪文件,可以读取没有太多有害的副作用)。
然后你可以使用ftruncate(2)系统调用(但我不知道它是否在/proc/
pseudofiles上)。 然后,您将使用truncate(1)命令:
truncate /proc/your_weird_pseudo_file
也许这可能不起作用(我不知道procfs文件系统是否支持)
或者(但这是丑陋的),提供另一个伪文件来清除一些状态,所以你的用户会做:
echo 1 > /proc/clear_your_weird_state