zoukankan      html  css  js  c++  java
  • Linux高性能服务器编程:信号

    信号是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。

    1.发送信号

    int kill(pid_t, int sig);

    2.中断系统调用

    如果程序在执行处于阻塞状态的系统调用时接收到信号,并且我们为该信号设置了信号处理函数,则默认情况下系统调用将被中断,并且errno被设置成EINTR。

    3.信号函数

    signal系统调用;

    sigaction系统调用

    4. 统一事件源

     信号是一种异步事件:信号处理函数和程序的主循环是两条不同的执行路线。信号处理函数需要尽可能快地执行完毕,

    以确保该信号不被屏蔽太久。一种解决方案是:把信号的主要处理逻辑放到程序的主循环中,当信号处理函数被触发时,它只是简单地通知主循环程序接收到信号,并把信号值传递给主循环,主循环再根据接收到的信号值执行目标信号对应的逻辑代码。

    5. 网络编程相关信号

    SIGHUP:  当挂起进程的控制终端时,SIGHUP信号将被触发。对于没有控制终端的网络后台程序而言,通常利用SIGHUP信号来强制服务器重读配置文件。

    SIGPIPE:默认情况下,往一个读端关闭的管道或socket连接中写数据将引发SIGPIPE信号。需要再代码中捕获并处理该信号,或者忽略,因为程序收到SIGPIPE信号的默认行为是结束进程。

  • 相关阅读:
    Node.js Express 框架
    Node.js RESTful API
    vim中自动格式化代码
    如何去掉linux配置文件的注释行和空行
    ImmutableJS
    JavaScript的相关知识
    React容器组件和展示组件
    node.js
    svg学习
    Redux 基础概念
  • 原文地址:https://www.cnblogs.com/sssblog/p/12378570.html
Copyright © 2011-2022 走看看