信号处理程序代码会阻塞主进程吗?

Posted

技术标签:

【中文标题】信号处理程序代码会阻塞主进程吗?【英文标题】:does signal handler code block the main process? 【发布时间】:2014-06-23 22:19:18 【问题描述】:

我正在如下注册一个警报信号处理程序,并且每秒设置一个警报信号。

  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 是像线程一样遵循单独的执行路径还是阻塞了主进程。

【问题讨论】:

***.com/questions/6129927/…的可能重复 【参考方案1】:

您可以通过在回调中添加 sleep() 调用来确定您是否使用 GNU C,并查看之后的代码是否延迟。

【讨论】:

以上是关于信号处理程序代码会阻塞主进程吗?的主要内容,如果未能解决你的问题,请参考以下文章

在插槽中调用 QDialog::exec 会阻塞主事件循环吗?

在辅助线程中调用 select()/pselect() 会导致主线程阻塞吗?

子进程是否也应该解除阻塞的SIGCHLD信号?

本机调用阻塞主线程

那些年搞不懂的多线程同步异步及阻塞和非阻塞---多线程简介

006-Process-Pool-Queue