zoukankan      html  css  js  c++  java
  • libev下的ev_child实用功能

    多进程场景下,作为高可靠性,高运维性的设计原则,master主进程如何掌控worker子进程的状态,是否当机,是否挂了?

    lib 作为一个强大的基础设施,自然也早考虑好了这种需求,ev_child就是为此而生,为我们提供了这种可能。

    首先看看样例代码:

    ev_child cw;

    static void child_cb (EV_P_ struct ev_child *w, int revents)
    {
    ev_child_stop (EV_A_ w); 
    printf ("process %d exited with status %x\n", w->rpid, w->rstatus); 

    pid_t pid = fork (); 

    if (pid < 0
    // error else if (pid == 0) 
    {
    // the forked child executes here exit (1); 
    else { 
    ev_child_init (&cw, child_cb, pid, 0); 
    ev_child_start (EV_DEFAULT_ &cw); 
    } 

    上面的例子 ,主进程通过pid将子进程绑定到了child_cb 事件proc 中,当子进程挂掉后,主进程就能捕捉的信号,重新创建进程,进行替补,保证工作流的正常。

    测试场景:

    1 主进程启动后启动一个子进程。

    2 手动通过后台kill命令,kill掉子进程。

    3 主进程收到信息,打印出提示。

    OK,成功! 

  • 相关阅读:
    一个菜鸟把Vue项目打包为APP的道路
    echarts
    no module named selenium
    git使用教程
    JDK安装与环境变量配置
    家具摆件
    家店分会场
    双十一电器城
    室内门锁
    http://cjy.suda.edu.cn/File.aspx?id=427
  • 原文地址:https://www.cnblogs.com/inteliot/p/2467399.html
Copyright © 2011-2022 走看看