file:read_file/1 - bug or feature?
Matthias Lang
matthias@REDACTED
Mon Oct 20 08:20:55 CEST 2003
> On Sun, 19 Oct 2003, david wallin wrote:
>
> > file:read_file("/proc//loadavg").
> > and got '{ok, <<>>}' as a reply.
Try
os:cmd("cat /proc/loadavg").
Jimmy's earlier mail was right on the money about the size.
Given that the length of that file (according to fstat) is zero, the
null result isn't altogether unreasonable. If you trace the emulator
(e.g. with strace or strut):
open("loadavg", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "", 0) = 0
close(3) = 0
you see what's happening. Here's what it looks like for a real file:
open("books", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0664, st_size=114, ...}) = 0
read(3, "The Anatomy of a High-Performanc"..., 114) = 114
close(3) = 0
write(0, "{ok,<<84,104,101,32,65,110,97,11"..., 111) = 111
People run into trouble every so often by assuming more unix-isms in
the 'file' module/ERTS than they actually have. E.g. you can't open
devices such as serial ports. It'd might help if the 'file' module
documentation had a warning about 'no funny file-like things' and I
should probably add a question to the FAQ about it too.
Matthias
More information about the erlang-questions
mailing list