Incomplete processing of "-eval" with closed stdin

Sam Bobroff <>
Mon Dec 21 07:02:08 CET 2009


I recently found that a small script of mine, run by passing Erlang code
as an argument to "erl -eval", was failing when run by cron. I could
easily reproduce the problem on the command line using this example:

$ erl  -eval 'io:fwrite("before\n"), receive after 1000 -> ok end,
io:fwrite("after\n"), init:stop().' < /dev/null
Eshell V5.7.4  (abort with ^G)
1> *** Terminating erlang ()

It seems like init is terminating the VM as soon as it detects that
stdin is closed, which is almost immediately.

Obviously my script should have had "-noshell" and adding it fixes the
problem. However, it does seem like a bug that the code passed by -eval
is cut off while still executing.

Perhaps "-noshell" should be applied automatically when erl is started
with stdin already closed?

I'm using R13B03.


Sam Bobroff |  | M5 Networks
Why does my email have those funny headers? Because I use PGP to sign
my email (and you should too!): that's how you know it's really from me.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 258 bytes
Desc: OpenPGP digital signature
URL: <>

More information about the erlang-bugs mailing list