SIGPIPE信号について

7947 ワード

          , Linux   ,   C++                      .             ,  core  .        ,           socket    write,        SIGPIPE  ,          .          TCP "    "  . TCP       ,           , TCP              .      close ,              ,        FIN .   TCP     ,                      ,           .     ,   TCP     ,            socket    close  shutdown.        FIN  socket  read  ,         ,    0,             .         write   ,          ,        (  ).              RST  ,      socket     close,     ,     ,       .   ,      write  (     RST  ),    SIGPIPE  ,       .         ,     SIGPIPE  ,      ,     SIG_IGN      : signal(SIGPIPESIG_IGN);   ,      write   ,    -1,   errno  EPIPE.             .  linux  socket      ,    send   disconnected socket ,         SIGPIPE                ,              。                 。      ,       SIGPIPEsignal (SIGPIPE, SIG_IGN); client    pipe      server  ,   client ,   server ,      client      Broken pipe    ,           。       ,               signal(int signum, sighandler_t handler)        。         ,            :    ,      (           )。             ,          。               :  (1)SIG_DFL         :   (a)           ,            。       ,                ,         ,  SIGKILL  。   (b)             SIG_DFL,            (SIGCHLD)。 (2)SIG_IGN       (a)                (b)      SIGKILL SIGTOP        SIG_DFL 3)SIG_ERR           signal(SIGPIPESIG_IGN),       SIGPIPE           ,          。