zoukankan      html  css  js  c++  java
  • main.go

    package main

    import (
        "flag"
        "fmt"
        "log"
        "os"
        "os/signal"
        "syscall"

        "github.com/Sirupsen/logrus"
    )
    var (
        Config     ProxyConfig    //配置文件解析后的结构体
        Log        *logrus.Logger 
        configFile = flag.String("c", "./conf.yaml", "配置文件:conf.yaml")
    )
     // 监听系统服务退出信号
    func onExitSignal() {
        signalChan := make(chan os.Signal)   //创建信号量通道
        // 监听系统服务退出信号
        signal.Notify(signalChan, syscall.SIGUSR1, syscall.SIGTERM, syscall.SIGINT, os.Kill)
        for {
            signal := <-signalChan   //读取信号量
            log.Println("Get Signal:%v
    ", signal)
            switch signal {
            case syscall.SIGTERM, syscall.SIGINT, os.Kill:    //监听退出事件
                log.Fatal("系统退出。。。")
            }
        }
    }
    func main() {

        flag.Parse()  //解析命令参数
        fmt.Println("Start Proxy...")

        // 解析配置
        parseConfigFile(*configFile)

        // 初始化日志模块
        initLogger()

        // 初始化代理的服务
        initBackendSvrs(Config.Backend)

        // 系统退出信号监听
        go onExitSignal()

        // 初始化状态服务
        initStats()

        // 初始化代理服务
        initProxy()

    }

  • 相关阅读:
    Java:线程的六种状态及转化
    Java:多线程概述与创建方式
    小白学Java:RandomAccessFile
    如何用IDEA开启断言
    如何通过IDEA添加serialVersionUID
    小白学Java:I/O流
    更改IDEA相对路径
    小白学Java:File类
    小白学Java:内部类
    Leetcode数组题*3
  • 原文地址:https://www.cnblogs.com/zhangboyu/p/7456705.html
Copyright © 2011-2022 走看看