我有以下代码.当我在睡觉时收到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)
你必须在某处设置信号处理程序.
#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)