When Processes Die
Learn how to monitor a process and link two processes.
We'll cover the following...
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 ...