【问题标题】:set of signal handlers in user space and kernel space processes用户空间和内核空间进程中的一组信号处理程序
【发布时间】:2013-11-07 05:22:21
【问题描述】:

我是linux新手..

“用户空间进程”和“内核空间进程(内核线程)”是否共享同一组信号。处理程序。只是想知道内核如何根据进程运行的区域(用户空间或内核空间)不同地发送信号?

【问题讨论】:

  • 没有。内核空间中不存在信号(至少不是您所说的那种信号)。

标签: c++ c linux signals


【解决方案1】:

我认为这里可能有些混乱。当人们在 UNIX 上下文中说“内核线程”时,他们通常只是指“线程”,而不是“内核空间进程”。过去有两种线程处理方法:在没有内核帮助的情况下实现该概念的库,称为用户线程;那些主要只是包装内核提供的专门用于多线程的系统调用的那些,称为内核线程。现在大多数人都使用内核线程,特别是因为 POSIX 线程标准自 2.6 以来就已成为 Linux 内核的一部分。

为了回答您的问题,信号总是被发送到一个 PID(好吧,除非您使用 pthread_kill 进行线程间信号)。对于 POSIX 线程,一个进程的所有线程共享一个 PID。但实际上只能中断一个线程。因此,每个线程都有一个信号掩码作为其线程本地存储的一部分。实际上,您应该做的是使用 pthread_sigmask 明确说明哪些线程处理哪些信号。在 Linux 中,根线程是默认的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2011-12-30
    • 2011-03-02
    • 1970-01-01
    • 2013-02-23
    相关资源
    最近更新 更多