sigpending(&sig_set);
时间: 2023-11-22 22:56:17 浏览: 32
`sigpending` 函数用于获取当前已经被阻塞且等待处理的信号集合。它的函数原型如下:
```c
int sigpending(sigset_t *set);
```
其中,`set` 参数是一个指向 `sigset_t` 类型的指针,用于存储获取到的信号集合。
函数执行成功时返回 0,否则返回 -1。
在调用 `sigpending` 函数后,通过检查 `set` 指向的信号集合,可以知道当前有哪些信号被阻塞且等待处理。
相关问题
sigprocmask()中第三个参数sigset_t *oldset存储的是当前进程的阻塞信号集,这句话对不对
是的,你说的基本正确。`sigprocmask()` 函数的第三个参数 `sigset_t *oldset` 是一个用于存储当前进程信号屏蔽字(阻塞信号集)的指针。在调用 `sigprocmask()` 函数时,如果 `oldset` 不为空,则当前进程的信号屏蔽字会被保存在 `oldset` 指向的内存中。
需要注意的是,`oldset` 指向的内存必须有足够的空间来存储信号屏蔽字,一般情况下,可以使用 `sigemptyset()` 函数来初始化一个空的信号集合,然后将其传递给 `sigprocmask()` 函数的 `oldset` 参数。如果不需要保存当前进程的信号屏蔽字,则可以将 `oldset` 参数设置为 `NULL`。
需要指出的是,`oldset` 中保存的是调用 `sigprocmask()` 函数前的信号屏蔽字,而不是调用 `sigprocmask()` 函数后的信号屏蔽字。因此,如果需要获取调用 `sigprocmask()` 函数后的信号屏蔽字,可以使用 `sigprocmask()` 函数配合 `sigpending()` 函数来实现。
sigqueueinfo和sigqueue函数
sigqueueinfo函数用于将siginfo结构的内容复制到一个sigqueue数据结构中,并将这个结构挂入对了。sigqueue的数据结构定义如下:struct sigqueue { struct sigqueue *next; siginfo_t info; }。 这个函数的作用是向指定进程发送一个带有额外数据的信号,这个额外数据被封装在sigval结构中。 该函数的原型为int sigqueue(pid_t pid, int sig, const union sigval val)。
另外,rm_from_queue函数是一个用于从sigpending结构中删除指定信号的辅助函数。在该函数内部,会遍历sigpending中的所有sigqueue结构,找到与给定信号匹配的结构并删除。 这个函数的原型为static int rm_from_queue(int sig, struct sigpending *s)。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [进程间通信-信号](https://blog.csdn.net/guoguangwu/article/details/122384647)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]