访问/ proc / cpuinfo时,Elixir File.read返回空数据

时间:2015-04-26 07:30:10

标签: erlang elixir

运行

之类的东西时
File.read "/proc/cpuinfo"
>> {:ok, ""}

相同的erlang函数相同。这种模式有什么理由吗?

2 个答案:

答案 0 :(得分:8)

就像@José提到的那样,proc fs很特殊,因为文件内容是动态生成的。如果您查看/ proc中的文件大小,您会看到它们的大小为JFrame

我相信这就是为什么0函数无法返回任何内容,文件为空!

解决方法是强制读取多个字节,在Erlang中你可以这样做:

read

要读取所有内容,请继续读取固定的字节数,直到{ok, FD} = file:open("/proc/cpuinfo", [read]). file:read(FD, 1024). 返回EOF。

答案 1 :(得分:4)

proc中的条目存在于一个名为procfs的特殊文件系统下,我相信Erlang不支持从中读取。更多信息:https://unix.stackexchange.com/questions/121702/what-happens-when-i-run-the-command-cat-proc-cpuinfo