我应该长时间保持sysfs文件打开吗?

时间:2016-03-07 18:11:47

标签: linux linux-kernel sysfs

在我正在处理的设备上,我可以写信/sys/class/leds打开/关闭LED指示灯。我可以在我的代码中保持文件打开,只在进程退出时关闭,或者我应该只在需要写入文件时打开文件吗?

3 个答案:

答案 0 :(得分:1)

是。这样做似乎没有害处。

我在第一个shell中尝试了以下内容

  <span id="hoverme">
    hover over me
  </span>

在第二个shell中,尝试过同样的事情。

#tailf /sys/class/leds/mmc0\:\:/brightness

这个实验只是为了表明,在第一个shell中,前一个打开(tailf)不会影响另一个进程(第二个shell)的打开(tailf)。

答案 1 :(得分:0)

如果查看Linux内核源代码中的tools / thermal / tmon / sysfs.c,所有函数都使用open-&gt; read / write-&gt; close。特别是当使用标准C库函数(如fread / fwrite)时,缓冲可能会导致问题。或者你可以在每次写入后使用fflush()。我仍然更喜欢为每次写入打开和关闭它,因为sysfs条目不是基于磁盘的,并且可以在运行时更改。特别是如果它们对应于热插拔设备。

答案 2 :(得分:0)

每次打开和关闭文件描述符(fopen)始终是最佳实践。如果你总是保持你的sysfs开放;然后它将持有特定数量的记忆直到最后。