This question was migrated from Unix & Linux Stack Exchange because it can be answered on Stack Overflow. Migrated四年前。Learn more。
我想补充我程序中的信号集。
提供的位操作API很少,例如sigorset()sigandset()
有没有找到信号集补码的API?
我想补充我程序中的信号集。
提供的位操作API很少,例如sigorset()sigandset()
有没有找到信号集补码的API?
最佳答案
您可能指的是sigsetops,它为信号提供了一些设置操作。只提供了几个操作,因为每个操作都被用作更复杂操作的构建块。
POSIX指定将信号集初始化为“filled”或“empty”的扩展,即。,
sigfillset
sigemptyset
此外,glibc还添加了自己的扩展,用于逻辑和操作集。(和往常一样,对可移植性有一个警告)。
但这些POSIX扩展可能被忽略了:
sigaddset
sigdelset
sigismember
要获得给定源操作数的补码,使用这些函数必须执行以下操作:
使用sigfillset
初始化目标操作数。把这个值设为1。
在源操作数中的信号值范围内迭代,使用sigismember
测试该信号集中是否存在给定信号。
对于源中存在的每个信号,使用sigdelset
将其从目标中移除。把它想象成把那个位设为零。
简而言之,对于补码没有预定义的操作,但是可以从现有POSIX扩展函数中实现所需的操作。
关于c - 如何在Linux C的用户空间程序中找到sigset_t的补码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33290395/
10-12 01:33