- 论坛徽章:
- 2
|
如题,apue上面的讨论,信号这一章都是针对"作业"而言,我认为这里的所谓"作业"指的是"进程"的概念。
但是我在linux上面做各种测试,man各种signal函数的时候,发现帮助页面里面主要都是说的各种和线程相关的内容,如下:
- SIGPROCMASK(2) Linux Programmer's Manual SIGPROCMASK(2)
- NAME
- sigprocmask - examine and change blocked signals
- SYNOPSIS
- #include <signal.h>
- int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
- Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
- sigprocmask(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
- DESCRIPTION
- sigprocmask() is used to fetch and/or change the signal mask of the
- calling thread. The signal mask is the set of signals whose delivery
- is currently blocked for the caller (see also signal(7) for more
- details).
复制代码 我就疑惑了。在unix诞生的早期,没有问题,只有进程的概念。但是现在的系统都支持pthread了,那么我发送一个signal给一个进程,是这个进程的所有线程都会处理呢还是某个线程才会处理?
还是说,要区分是安全的信号(发给某个线程)和不安全的信号(发给某个随机的线程)?
因为信号这一章的内容,讨论了安全的信号和非安全的信号。我想问:信号是不是也要分进程的信号还是线程的信号呢?
如果能知道signal的机制在linux内部实现的机理是什么样的,也许我会更好的理解这个问题。但是我没研究过内核的实现。所以还望各位大侠指教!
|
|