When Processes Die
Learn how to monitor a process and link two processes.
We'll cover the following...
When a process dies
Who gets told when a process dies? By default, no one. Obviously, the VM knows and can report it to the console, but our code will be oblivious unless we explicitly tell Elixir we 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 :boom
. 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.
Run the elixir -r link1.exs
command to execute the code below:
defmodule Link1 do import :timer, only: [ sleep: 1 ] def sad_function do sleep 500 exit(:boom) end def run do spawn(Link1, :sad_function, []) receive do msg -> IO.puts "MESSAGE RECEIVED: #{inspect msg}" after 1000 -> IO.puts "Nothing happened as far as I am concerned" end end end Link1.run
When a process dies
Think about how we would’ve written this ...