代码之家  ›  专栏  ›  技术社区  ›  Francois

c++/gcc:捕捉到信号后,main出口出现分段错误

  •  1
  • Francois  · 技术社区  · 14 年前

    以下代码在退出时触发分段错误。 似乎只有在“sigaction”调用和循环之间的堆栈上分配数据时才会发生这种情况:

    #include <signal.h>
    #include <unistd.h>
    
    bool end = false;
    void handler(int)  {
     end = true; 
    }
    
    int main()  {
     struct sigaction sigs;
     sigs.sa_handler = handler;
     sigaction(SIGINT, &sigs, NULL);
    
     int i;
    
     while (!end)
      sleep(1);
     return 0;
    }
    

    按ctrl-C运行并停止

    -&燃气轮机;“int i”行打开时:分段错误

    (使用g++v4.1.1、OS-linux内核2.6.19编译)

    1 回复  |  直到 14 年前
        1
  •  3
  •   nos    14 年前

    struct sigaction args = {}; 
    

    memset(&args,0,sizeof args);