zoukankan      html  css  js  c++  java
  • Chapter 2

    Handling Interrupt Signals

    现实的应用程序需要在被Ctrl-C或SIGTERM等其他信号中断时干净地关闭。默认情况下,这些命令会杀死进程,这意味着消息不会被刷出,文件不会被干净地关闭,等等。

    程序提供了s_catch_signals(),它捕获Ctrl-C (SIGINT)和SIGTERM。当这些信号到达时,s_catch_signals()处理程序设置全局变量s_interrupted。由于您的信号处理程序,您的应用程序不会自动死亡。相反,你有机会清理并优雅地退出。您现在必须显式地检查中断并正确地处理它。通过在主代码的开头调用s_catch_signals()(从interrupt.c中复制)来实现这一点。这就建立了信号处理。中断会对ZeroMQ调用产生如下影响:

    如果代码在阻塞调用中阻塞(发送消息、接收消息或轮询),那么当信号到达时,调用将返回EINTR。
     像s_recv()这样的包装器在被中断时返回NULL。
     
    因此,检查EINTR返回代码,NULL返回,和/或s_interrupted。
     
    如果调用s_catch_signals()而不测试中断,则应用程序将不受Ctrl-C和SIGTERM的影响,这可能很有用,但通常不是。
  • 相关阅读:
    操作系统-微内核操作系统
    设备管理-虚设备与SPOOLING技术
    设备管理-数据传输控制方式
    文件管理-空闲存储空间的管理
    文件管理-索引文件结构
    Alpha冲刺8
    Alpha冲刺7
    Alpha冲刺6
    Alpha冲刺5
    Alpha冲刺4
  • 原文地址:https://www.cnblogs.com/usen521/p/15328415.html
Copyright © 2011-2022 走看看