You can start multiple erlang shells and other “jobs” as well. The s command can take an argument which is a module name (in erlang syntax) and it will then call module.call(). The default i/o of the jobs is buffered so you only see the i/o of the job you are connected with.
It is sort of like having multiple windows in an OS but without the windows.
That was the general idea anyway way.
I don’t know why multiple instances of the Elixir shell cannot be run. If you try and do
--> s 'Elixir.IEx.CLI'
then the whole system blocks and you have to terminate the system with ctrl-C. Which is a real shame.
For a better description check out http://rvirding.blogspot.com/search/label/Programming%20and%20Erlang . In the first blog about the erlang rationale there is a link to a paper I wrote on the Erlang rationale and towards the end of it their is a description of the i/o system and of “Process groups, Jobs and JCL” which is what this is. Calling it “JCL” was a joke.
Sorry, wandering a bit here.
EDIT: The Erlang shell is not really anything special from the system’s POV, it is just a normal process which doesn’t do anything strange or special or blocking or weird. That is why you can run multiple shells.






















