Erlang(12):进程和错误

进程:

普通进程和系统进程,

连接:

进程之间可以相互连接。如果AB两个进程连接,A挂了的时候,会想B发送一个错误信号。

连接组:

进程P的连接组是芝P相连的一组进程。

监视:

监视和连接很相似,但是单向的。

消息和错误信号:

进程协作的方式是交换消息或错误信号。

错误信号的接收:

{'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发送一个伪造退出信号。,自身并不会退出。



posted @ 2017-01-19 00:12  肥宝游戏  阅读(258)  评论(0编辑  收藏  举报