進程:spa
普通進程和系統進程,orm
鏈接:進程
進程之間能夠相互鏈接。若是AB兩個進程鏈接,A掛了的時候,會想B發送一個錯誤信號。it
鏈接組:class
進程P的鏈接組是芝P相連的一組進程。erlang
監視:demo
監視和鏈接很類似,可是單向的。process
消息和錯誤信號:消息
進程協做的方式是交換消息或錯誤信號。錯誤
錯誤信號的接收:
{'EXIT', Pid, Why}
當普通進程收到錯誤消息時,若是退出緣由不是normal,該進程就會終止,並向它的鏈接組廣播一個退出信號
顯式錯誤信號
任何執行exit(Why)的進程都會終止
exit(Pid,Why),發送一個虛假錯誤信號
不可捕捉的退出信號
系統進程收到摧毀信號(kill signal)時會終止。摧毀信號會繞過常規的錯誤信號處理機制。
建立進程並創建鏈接
-spec spawn_link(Fun)->Pid
-spec spawn_link(Mod, Fnc, Args)->Pid
新進程掛掉會波及舊進程
建立進程並監視
-spec spawn_monitor(Fun)->Pid
-spec spawn_monitor(Mod, Fun, Args)->{Pid, Ref}
子進程掛了,會向父進程發送消息{‘DOWN’, Ref, process, Pid, Why}。可是父進程不會掛掉。
-spec process_flag(trap_exit, true)
把當前進程轉變成系統進程,系統進程是一種可以接收和處理錯誤信號的進程。
-spec link(Pid)->true
建立一個與進程Pid的雙向鏈接
-spec unlink(Pid)->true
移除鏈接
-spec erlang:monitor(process, Item)->Ref
設立一個監視,Item能夠是進程的Pid,也能夠是它的註冊名稱。
-spec demonitor(Ref)->true
移除監視
-spec exit(Why)-> none()
終止進程
-spec exit(Pid, Why)->true
向進程Pid發送一個僞造退出信號。,自身並不會退出。