[erlang-questions] file:open/2 and Unix Device Files

Martin Scholl <>
Tue Nov 4 14:18:02 CET 2008


Hello again,

Quoting Colm Dougan <>:
[snip]
> I don't have the answer to that.  However, in case you were not aware,
> if you open a file in "raw" mode then you can read device files.
Thank you for hinting me this, but I am afraid it doesn't work for me(r):

Erlang (BEAM) emulator version 5.6.4 [source] [64-bit] [smp:2]  
[async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.6.4  (abort with ^G)
1> {ok, File} = file:open("/dev/sdb", [raw]).
** exception error: no match of right hand side value {error,eisdir}
2> {ok, File} = file:open("/dev/sdb", [raw,binary]).
** exception error: no match of right hand side value {error,eisdir}
3> {ok, File} = file:open("/dev/sdb", [raw,binary,read]).
** exception error: no match of right hand side value {error,eisdir}
4> {ok, File} = file:open("/dev/sdb", [raw,binary,write]).
** exception error: no match of right hand side value {error,eisdir}
5> {ok, File} = file:open("/dev/sdb", [raw,binary,append]).
** exception error: no match of right hand side value {error,eisdir}
6> {ok, File} = file:open("/dev/sdb", [raw,binary,append,read]).
** exception error: no match of right hand side value {error,eisdir}
7> {ok, File} = file:open("/dev/sdb", [raw,binary,append,write]).
** exception error: no match of right hand side value {error,eisdir}


Are you doing something different than what I have already tried?

After a quick look at unix_efile.c:673 it seems impossible for me to  
open device files other than /dev/null "the standard way".


Martin

P.S.: I will not use those webmailers again.




More information about the erlang-questions mailing list