【问题标题】:How to make the process ignore some signal(like SIGHUP,SIGABRT,SIGABORT,SIGINT etc..)如何使进程忽略某些信号(如 SIGHUP、SIGABRT、SIGABORT、SIGINT 等。)
【发布时间】:2013-09-04 06:43:01
【问题描述】:

我是新手,对linux有基本的了解。

每当内核遇到特定进程的信号时,首先它会检查特定进程的进程控制块(PCB)中的信号处理程序表。如果信号处理程序已注册,它将调用该函数。如果标志是 SIG_DEFAULT 则它调用在内核的全局信号表中注册的信号处理程序。如果标志是 SIG_IGNORE ,那么内核只是忽略特定进程的信号。

所有信号都有默认的信号处理程序,内核已经在信号表中注册了。

我只想知道进程如何将标志从 SIG_DEFAULT 更改为 SIG_IGNORE。请解释机制(使用系统调用或信号表或PCB中的更改)。下次再次捕获信号时,内核会进行哪些优化。

【问题讨论】:

标签: c++ c linux kernel


【解决方案1】:

调用signal 函数。请注意,某些信号最终可能无法忽略。

【讨论】:

  • signal 或者 sigaction 都可以用,但是想知道下一次内核的信号处理优化,全局符号表有什么变化。
  • @SantoshSahu:因此,将其放在问题的标题中可能是个好主意。也许现在提出另一个新问题,正是在问这个问题。
猜你喜欢
  • 2012-10-08
  • 2022-06-28
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多