我正在注册一个警报信号处理程序,如下所示,并且每秒设置一个警报信号。
sigact.sa_handler = time_handler;
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = SA_RESTART;
if (sigaction(SIGALRM, &sigact, NULL) < 0)
panic("sigaction SIGALRM: %s\n", strerror(errno));
/* Set alarm signal every second */
alarm(1);
我的问题是函数time_handler
是否遵循像线程一样的单独执行路径,或者它是否会阻塞主进程。
最佳答案
您可以通过在回调中添加 sleep() 调用来确定您是否使用 GNU C,并查看后面的代码是否延迟。
关于c - 信号处理程序代码是否会阻塞主进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375498/