进程链接:
通过调用process_flag(trap_exit,true)来把一个普通进程转为系统进程,系统进程能捕获它所链接的进程的退出消息。
进程A与进程B链接,进程B调用process_flag(trap_exit,true),进程B为系统进程,进程A正常常退出时,进程B捕获到并处理A退出的消息,进程B继续正常运行。
进程A与进程B链接,进程B调用process_flag(trap_exit,true),进程B为系统进程,进程A异常退出时,进程B捕获到并处理A退出的消息,进程B继续正常运行。
进程A与进程B链接,进程B调用process_flag(trap_exit,false),进程B不是系统进程,进程A正常退出时,进程B不会捕获到A的退出消息,进程B继续正常运行。
进程A与进程B链接,进程B调用process_flag(trap_exit,false),进程B不是系统进程,进程A异常退出时,进程B不会捕获到A的退出消息,进程B也退出了。
ets:
如果已经定义了一个记录:-record(player,{id,name,age}).
如果再定义一个ets用于保存玩家信息:ets:new(player,[set,protected,named_table,{keypos,#player.id}]).
编译文件的时候没问题,程序运行的时候在新建ets表player的时候会报错(** exception exit: badarg in function ets:new/2)。
解决方法:表名和记录名冲突了,随便改一个。
pid:
{ok,Pid} = gen_server:start_link(Name,