在我正在处理的设备上,我可以写信/sys/class/leds
打开/关闭LED指示灯。我可以在我的代码中保持文件打开,只在进程退出时关闭,或者我应该只在需要写入文件时打开文件吗?
答案 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开放;然后它将持有特定数量的记忆直到最后。