erlang学习:用OTP构建系统4,监控树学习

news2024/9/23 11:17:43

监控树学习

之前写的server程序,如果产生了错误,server会立刻停止。本次学习使用了监控树,能够让server崩溃时打印错误信息并重启服务器,能够使服务器正常使用

-module(sellaprime_supervisor).
-behaviour(supervisor).
-export([start/0, test/0, start_link/1, init/1]).

start() ->
  spawn(fun() ->
    supervisor:start_link({local, ?MODULE}, ?MODULE, _Arg = [])
        end).

test() ->
  {ok, Pid} = supervisor:start_link({local, ?MODULE}, ?MODULE, _Arg = []),
  unlink(Pid).
start_link(Args) ->
  supervisor:start_link({local, ?MODULE}, ?MODULE, Args).
init([]) ->
  gen_event:swap_handler(alarm_handler,
    {alarm_handler, swap},
    {my_alarm_handler, xyz}),
  {ok, {{one_for_one, 3, 10},
    [{tag1,        %%Tag 这是一个原子类型的标签,将来可以用它指代工作进程。
      {area_server, start_link, []},  %%{Mod, Func, ArgList} 它定义了监控器用于启动工作器的函数,将被用作apply(Mod, Fun, ArgList)的参数。
      permanent,   %%permanent(永久)进程总是会被重启。transient(过渡)进程只有在以非正常退出值终止时才会被重启。temporary(临时)进程不会被重启
      10000,    %%工作器终止过程允许耗费的最长时间。如果超过这个时间,工作进程就会被杀掉。
      worker,    %%这是被监控进程的类型。可以用监控进程代替工作进程来构建一个由监控器组成的树
      [area_server]},  %%如果子进程是监控器或者gen_server行为的回调模块,就在这里指定回调模块名。
      %%第二个模块
      {tag2,
        {prime_server, start_link, []},
        permanent,
        10000,
        worker,
        [prime_server]}
    ]}}.

正常启动监控树运行截图

请添加图片描述

启动监控树后,就可以运行area_server与prime_server中的代码,如果产生错误则会进行提示并重启服务器

请添加图片描述

服务器自动重启之后能够继续运行代码
请添加图片描述
与没有监控树进行对比
没有监控树,如果server崩溃,进程就挂掉了
请添加图片描述
进程挂掉,无法运行

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iPhone升级iOS 18后遭遇“白苹果”?别怕,这几招教你轻松应对!

在这个科技日新月异的时代,苹果iOS系统的每一次更新都牵动着亿万果粉的心。iOS 18作为苹果最新的操作系统,不仅带来了全新的功能体验,也难免会遇到一些用户反馈的“小插曲”,比如升级后出现的“白苹果”现象。面对这一状况&#x…

系统编程-UDP

UDP 目录 UDP 引入 使用 UDP 的注意事项 一、单播的流程 -- 一对一 如何实现端口和地址重复绑定 二、广播的流程 -- 一对多 三、组播的流程 -- 多对多 加入组播,需要使用 setsockopt 函数 主要代码 -- 主要是发送方 引入 -- UDP协议的特点 无连接性&…

24:【stm32】DMA数据搬运

DMA数据搬运 1、DMA的简介2、STM32中的DMA结构3、案列3.1、将数组DataA中的数据搬运到DataB中3.2、ADC扫描模式DMA 1、DMA的简介 DMA是直接存储器存取,它可以提供外设寄存器和存储器,存储器与存储器之间的高速数据的传输,无需CPU的干预&…

通配符证书的申请及配置教程

在当今高度互联的世界里,网站和应用程序需要确保其数据传输的安全性,以保护用户的隐私和敏感信息不被窃取。为此,HTTPS协议成为了标准配置,而SSL/TLS证书则是实现这一安全协议的重要组成部分。特别地,对于那些运营着多…

asp.net core web api项目添加自定义中间件

前言 在asp.net core web api项目中,默认提供了很多的中间件,比如访问静态文件中间件UseStaticFiles,跨域配置中间件UseCors,路由中间件UseRouting,身份验证中间件UseAuthentication。 那么如何添加一些自定义的中间件呢。 需求…

【数据结构】单链表功能的实现

目录 1.链表的概念及结构 2.单链表功能的实现 2.1打印单链表 2.2创建节点 2.3单链表尾插 2.3单链表头插 2.5单链表尾删 2.6单链表头删 2.7单链表的查找 2.8在指定位置之前插入数据 2.9在指定位置之后插入数据 2.10删除pos节点 2.11删除pos之后的节点 2.12销毁链表…

快专利与慢专利:速度与质量的天平

在当今快速发展的科技时代,专利成为了创新成果的重要保护手段。然而,不同的创新有着不同的节奏,由此也产生了“快专利”与“慢专利”之分。快专利以其迅速的申请和应用,为创新者抢占市场先机;慢专利则凭借深度的研发和…

Django Admin后台从一个页面同时编辑多个模型

要从Django Admin后台一个页面同时编辑多个对象,我们需要使用内联。 假设你有一个Category模型,并且需要在Admin后台Category编辑页面,同时编辑Villain模型。你可以在admin.py中使用内联: class VillainInline(admin.StackedInl…

EDIUS X 10.34.9631 视频剪辑软件 下载 包含安装说明

下载地址(资源制作整理不易,下载使用需付费,不能接受请勿浪费时间下载) 链接:https://pan.baidu.com/s/1P2wKxVcSx5WzAtHXCaAp5A?pwd227i 提取码:227i

自动控制:鲁棒控制的原理和设计

自动控制:鲁棒控制的原理和设计 引言 在实际控制系统中,由于模型不确定性、外部扰动、参数变化等因素,传统的控制方法难以保证系统在各种情况下的性能。这时,鲁棒控制(Robust Control)应运而生。鲁棒控制…

Vue(十一)默认插槽、具名插槽、作用域插槽

文章目录 一、需求二、插槽1. 默认插槽2. 具名插槽3. 作用域插槽 一、需求 有三个Category组件&#xff0c;展示不同的内容。 需求&#xff1a;美食模块需要展示图片&#xff0c;游戏模块还是文字&#xff0c;电影模块展示预告片。 <!--App组件--> <template>&l…

四款录音神器,你选对了吗?

在快节奏的现代生活中&#xff0c;我们经常需要处理大量的录音文件&#xff0c;如会议记录、采访、讲座等。为了更高效地处理这些信息&#xff0c;录音转文字工具变得越来越重要。本文将为大家介绍四款常用的录音转文字工具&#xff0c;并分享使用体验。 一、福昕PDF转换器 直…

Matlab 并联双振子声子晶体梁结构带隙特性研究

参考文献&#xff1a;吴旭东,左曙光,倪天心,等.并联双振子声子晶体梁结构带隙特性研究[J].振动工程学报,2017,30(01):79-85. 为使声子晶体结构实现范围更宽的多带隙特性&#xff0c;基于单振子型声子晶体结构弯曲振动带隙频率范围窄的局 限&#xff0c;提出了一种双侧振子布置…

电商智能分析:阿里巴巴商品详情API返回值的挖掘与利用

电商智能分析是利用大数据和机器学习技术来深入理解用户行为、商品趋势以及市场变化的过程。阿里巴巴商品详情API作为获取商品详细信息的重要工具&#xff0c;其返回值中蕴含了丰富的数据&#xff0c;可以通过挖掘和利用这些数据来进行智能分析。下面&#xff0c;我将提供一个基…

美畅物联丨科技赋能校车安全:智慧监控管理系统的创新应用

1、背景 1.1应用需求 孩子&#xff0c;作为国家未来的希望之星和民族发展的潜力所在&#xff0c;其安全与健康向来都是社会瞩目的核心要点。校车&#xff0c;作为孩子们日常出行的关键交通载体&#xff0c;其安全性更是时刻牵动着每一个家庭的敏感神经。然而&#xff0c;不可…

TensorFlow1和TensorFlow2介绍

目录 一.安装 二.TensorFlow结构分析 数据流图介绍 三.图与TensorBoard 1.图结构 2.图的相关操作 3.自定义图 4.开启会话Session中指定使用那个图 四.TensorBoard&#xff1a;可视化 1.数据序列化-events文件 2.启动TensorBoard 3.tensorflow2中使用tensorboard 1.…

【编程基础C++】素数判定、最小公倍数与最大公因数的实现方法

文章目录 素数法一法二 最大公因数辗转相除法另一写法 最小公倍数直接枚举法根据GCD算LCM 素数 素数 是指大于1的自然数&#xff0c;且只能被1和自身整除。例如&#xff0c;2、3、5和7都是素数。它们在数学中非常重要&#xff0c;因为任何大于1的自然数都可以唯一地表示为素数…

【类模板】成员函数模板

一、成员函数模板的基本含义 不管是普通的类&#xff0c;还是类模板&#xff0c;都可以为其定义成员函数模板&#xff0c;以下的情况就是类模板和成员函数模板都有各自独立的一套参数&#xff1a; template<typename T1> class A { public:T1 m_ic;static constexpr int…

电力104规约

对象性质十进制十六进制数量适用报文类型ASDU遥测1793~2304701H~900H512*9、11、21、34、35遥信1~10241H~400H1024*1、3、20、30、31遥控2817~2944B01H~B80H128*45、46遥调2945~3072B81H~C00 H128*47APCI 应用规约控制信息; ASDU 应用服务数据单元; APDU 应用规约数据单元;…

CountDownLatch的应用与原理

一、什么是CountDownLatch CountDownLatch是具有synchronized机制的一个工具&#xff0c;目的是让一个或者多个线程等待&#xff0c;直到其他线程的一系列操作完成。 CountDownLatch初始化的时候&#xff0c;需要提供一个整形数字&#xff0c;数字代表着线程需要调用countDow…