在C中的SIGINT之后不会入睡

Kit*_*cha 0 c

我有以下代码.当我在睡觉时收到SIGINT时如何将控件带回cleanupCode()?我不想使用goto或jump.在处理程序内部调用cleanupCode不是一个选项.

sigHandler(int sig __atribute__((unused)) {

    loopFlag = 0; 
}

void cleanupCode() 
{  printf("Graceful exit \n");

} 
int main ()  {    
     while(loopFlag)
       sleep(600);
     cleanupCode(); 
}
Run Code Online (Sandbox Code Playgroud)

Duc*_*uck 5

你必须在某处设置信号处理程序.

#include <signal.h>
#include <unistd.h>

volatile int loopFlag = 1;

void sigHandler(int sig)
{
    loopFlag = 0;
}

void cleanupCode()
{
     printf("Graceful exit \n");
}

int main ()
{
    signal(SIGINT, sigHandler);

     while(loopFlag)
       sleep(600);

     cleanupCode();
}
Run Code Online (Sandbox Code Playgroud)