erlang link 与 monitor
erlang 提供了两个这样的方法:link/1 monitor/2
1、双向监听
-spec link(PidOrPort) -> true when
PidOrPort :: pid() | port().
link(_PidOrPort) ->
erlang:nif_error(undefined).
把调用的此方法的进程跟_PidOrPort 链接起来,他们之间的链接是相互的。如果一条进程被退出另一条进程会受到退出消息,格式为{'EXIT', Pid, Reason}
如果彼此都是gen_server,可以这样截取信息:
handle_info({'EXIT', _PID, _Reason}, State) ->
ok.
2、单向监听:即当前调用进程去监听另一个进程。
-spec monitor(Type, Item) -> MonitorRef when
Type :: process,
Item :: pid() | RegName | {RegName, Node},
RegName :: module(),
Node :: node(),
MonitorRef :: reference().
monitor(_Type, _Item) ->
erlang:nif_error(undefined).
eg: monitor(process, Pid), 即当前进程监听 Pid 的退出销毁信息,如果Pid被退出或者销毁, 你的当前进程会收到{'DOWN', _Ref, _Msg, _PID, _Reason} 这样的信息
如果你的进程是gen_server 可以这样截取信息:
handle_info({'DOWN', _Ref, _, _PID, _Reason}, State) ->
ok.
简单的使用就是如此,如果需要继续深入可以看看源码,或这样官方文档。
erlang link 与 monitor的更多相关文章
- 【转载】Erlang 中 link 和 monitor 的区别
Link and Monitor differences 原文地址 Introduction link/1 and monitor/2 are 2 different ways of notifyin ...
- erlang进程监控:link和monitor
Erlang最开始是为了电信产品而发展起来的语言,因为这样的目的,决定了她对错误处理的严格要求.Erlang除了提供exception,try catch等语法,还支持Link和Monitor两种监控 ...
- Erlang进程的Link机制
这篇文章还不是最终版,有时间时,我会再来补充完善. 什么是link Erlang程序基于进程建模,进程之间的交互机制有收发消息,link和monitor.其中,收发消息通常用于正常的进程间通讯,而li ...
- 关于在链路聚合下做smart,monitor link的转发测试
关于在链路聚合下做smart,monitor link的转发测试 这次又要开始瞎折腾了.没事找事了.毕竟我还是很无聊的: 这个实验主要要涉及到以下几个方面: 1.gvrp的应用: 2.Smart Li ...
- 一位Erlang程序猿的自白
12.00 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style De ...
- [转]Erlang不能错过的盛宴
Erlang不能错过的盛宴 (快步进入Erlang的世界) 作者:成立涛 (litaocheng@gmail.com) 作为程序员,我们曾经闻听很多“业界动态”,“技术革新”,曾经接触很多“高手箴言” ...
- 一位Erlang程序员的自白
Erlang不能错过的盛宴 (快步进入Erlang的世界) 作者:成立涛 (litaocheng@gmail.com) 作为程序员,我们曾经闻听很多“业界动态”,“技术革新”,曾经接触很多“高手箴言” ...
- Erlang generic standard behaviours -- gen_server terminate
gen_server 主体 module 已经分析完了(http://www.cnblogs.com/--00/p/4271982.html),接着,分析下gen_server 中的terminate ...
- 进入Erlang的世界
http://erlang.group.iteye.com/group/wiki/1407-to-enter-the-world-of-erlang 进入Erlang的世界 作为程序员,我们曾经闻听很 ...
随机推荐
- 依赖注入框架Ninject
为什么需要依赖注入 我们提到MVC的一个重要特征是关注点分离(separation of concerns).我们希望应用程序的各部分组件尽可能多的相互独立.尽可能少的相互依赖. 我们的理想情况是:一 ...
- LInux下几种定时器的比较和使用
在数据通信过程中,会遇到对数据发送时间的格式要求.所以要在应用中根据实际要求选择不同的定时器,就要考虑到几种应用定时器的特点. 定时器文章参考 一般而言有, 1.sleep,usleep和nanosl ...
- 常用adb 指令
adb指令 monkey https://www.cnblogs.com/aland-1415/p/6949964.html
- Spring-----入门
Spring 入门 一.首先导入核心jar包 commons-logging-1.1.3.jar 日志 spring-beans-4.2.4.RELEAS ...
- Java集合类(转自hey平平)
一.集合与数组 数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. ...
- pyinstaller深入使用,打包指定模块,打包静态文件
1.标准用法: pyinstall **.py 直接打包 pyinstall -F **.py 打包成单文件 pyinstall -W **.py 去掉控制台窗口,黑窗口 p ...
- SharedPreference映射Java类
package com.overlook.weagree.util; import android.app.Activity; import android.content.Context; impo ...
- Ubuntu安装之python开发
Ubuntu安装之python开发 什么??公司要用Ubuntu(乌班图)?不会用??怎么进行python开发??? 乌班图操作系统下载地址:http://releases.ubuntu.com/ ...
- DCOMP——分散式计算
新型网络DCOMP 据国外媒体2017年11月7日报道,曾经发明互联网的秘密机构“美国国防部高级研究计划局(DARPA)”如今正致力于研发能够完胜互联网的新网络,并且启动了一项链接物联网.智能手机.智 ...
- ubuntu16.04安装pycharm
Ubuntu16.04下,默认安装了python2.7和python3.5,在终端下,输入“Python” 或“python3”可查看具体版本. 1.安装PyCharm前,先配置PyCharm的JD ...