When Processes Die

Who gets told when a process dies? By default, no one. Obviously the VM knows and can report it to the console, but your code will be oblivious unless you explicitly tell Elixir you want to get involved.

Here’s the default case: we spawn a function that uses the Erlang timer library to sleep for 500 ms. It then exits with a status of 99.

The code that spawns it sits in a receive. If it receives a message, it reports that fact; otherwise, after one second it lets us know that nothing happened.

spawn/link1.exs
 
defmodule​ Link1 ​do
 
import​ :timer, only: [ sleep: 1 ]
 
 
def​ sad_function ​do
 
sleep 500
 
exit​(:boom)
 
end
 
def​ run ​do
 
Process.flag(:trap_exit, ​true​)
 
spawn(Link1, :sad_function, [])
 
receive ...

Get Programming Elixir now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.