[erlang-questions] How can I close standard input output streams and check for errors in Erlang?
Steven Stewart-Gallus
sstewartgallus00@REDACTED
Fri Jan 3 22:02:44 CET 2014
Hello Erlang-Questions!
I checked on another forum previously at
http://www.reddit.com/r/erlang/comments/1txf60/how_can_one_flush_and_close_standard_streams_in/
and at the Erlang IRC channel on Freenode but I couldn't get help so
I've come to the mailing list. Can Erlang-Questions help me figure out
how to close standard input output streams and check for errors in
Erlang? I should be able to report an error if standard input and
output don't close properly and return an exit code of 1 if closing
standard error doesn't work.
My problem:
> A simple hello world program is
>
> -module(hello).
> -author('sstewartgallus00@REDACTED').
> -export([hello_world/0]).
>
> hello_world() -> io:fwrite("hello, world~n")
>
> I can compile and run this with erl -compile hello && erl -noshell -s
> hello hello_world -s init stop and it works. But what if I run it as
> erl -compile hello && erl -noshell -s hello hello_world -s init stop >
> /dev/full (on a Linux box)? That doesn't work correctly (correct
> behaviour should be reporting a full hard disk). *I know in C and Java
> I can close standard streams to flush them and check for errors but
> how can I do so in Erlang?
>
> *Strictly speaking one can't write this program correctly in portable
> C or Java either because operating system kernels like Linux defer
> writes so one has to do an fsync call for absolute correctness.
Thank you,
Steven Stewart-Gallus
More information about the erlang-questions
mailing list