Erlang / Erlang Advanced Interview questions
Why is exit/1 different from exit/2?
exit(Reason) (arity 1) terminates the calling process itself with the given reason,
exactly like any other uncaught exception, and propagates that reason to any linked processes.
exit(Pid, Reason) (arity 2) instead sends an exit signal to another process, asking it to
terminate, without affecting the caller at all.
exit(normal). %% terminates the current process exit(OtherPid, kill). %% asks OtherPid to terminate; caller keeps running
A special case worth knowing: exit(Pid, kill) sends the untrappable reason kill,
which forces termination even if the target process is trapping exits — every other exit reason can be
intercepted via trap_exit, but kill always succeeds, making it the reliable
"stop this process no matter what" tool when a normal shutdown request might be ignored or delayed.
More Related questions...