美文网首页
信号处理小结

信号处理小结

作者: tianxinheihei | 来源:发表于2016-06-05 18:26 被阅读0次
    • 信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式。信号可由硬件中断(按下组合键/除0/无效的存储访问)或软中断(进程调用kill或sigqueue发送信号)产生

      #include <csignal>
      #include <iostream>
      #include <unistd.h>
      #include <time.h>
      using namespace std;
      void signalUsr1Handler(int signum) {
      cout << "interrup signal: " << signum << " received." << endl;
      //exit(signum);
      }
      void signalKillHandler(int signum) {
      cout << "signal kill: " << signum << " received." << endl;
      }
      int main(int argc, char* argv[]) {
      signal(SIGUSR1, signalUsr1Handler);
      signal(SIGKILL, signalKillHandler);
      while(1) {
      const time_t now = time(NULL);
      cout << asctime(localtime(&now)) << "going to sleep..." << endl;
      sleep(3);
      }
      //cout << "going to pause..." << endl;
      //pause();
      //
      return 0;
      }

    依次发送kill -SIGUSR1 24021和kill -SIGKILL 20241可得到


    Paste_Image.png

    上面的示例中,尽管注册了SIGKILL的处理函数,并不起作用,是因为SIGKILL和SIGSTOP这两个信号不能被忽略,同时这两个信号也不能被捕获和阻塞。
    另外:pause:将进程挂起等待信号,直到信号到来,才会继续处理

    相关文章

      网友评论

          本文标题:信号处理小结

          本文链接:https://www.haomeiwen.com/subject/rjnkdttx.html