Erlang / Erlang Advanced Interview questions
What is the difference between linking and monitoring a process?
Both let one process find out when another terminates, but they differ in direction and severity of the notification. A link is bidirectional and, by default, fatal: if either linked process crashes, the other receives an exit signal and dies too, unless it's trapping exits.
A monitor (erlang:monitor(process, Pid)) is unidirectional and never fatal: only the
monitoring process is notified, and that notification always arrives as an ordinary
{'DOWN', Ref, process, Pid, Reason} message rather than an exit signal that could kill it.
| Link | Monitor |
| Bidirectional; both sides affect each other. | Unidirectional; only the caller is notified. |
| Default behavior can kill the other side. | Never kills anything; always a message. |
| Typically used between a supervisor and its children. | Typically used by a client that needs to know a server died, without being tied to its lifecycle. |
More Related questions...