我看到了以下代码行here .
puts("sigprocmask(SIG_UNBLOCK, ~[], []) = 0");
我不明白,空数组脚本([]
)是做什么的?
另外,C 中 ~[]
的用途是什么?
最佳答案
链接的程序似乎正在用某种发明的半形式化语言记录其操作。这种日志记录“语言”不是 C。您问题中的字符串文字只是该发明的“语言”中的一行,程序将其发送到标准输出。因此~[]
bit 与 C 无关,在 C 上下文中没有特殊含义。
每次之后(据说成功)k_sigprocmask
通过将此类字符串发送到输出来调用程序日志。
例如,当程序输出sigprocmask(SIG_SETMASK, [], NULL) = <something>
时它基本上只是告诉用户“我刚刚使用第一个参数 k_sigprocmask
调用 SIG_SETMASK
函数,第二个参数为空位集,第三个参数为空指针。并且我收到了 <something>
作为错误代码。”
[]
代表全零位掩码(空集)。 [HUP INT QUIT]
代表只有HUP
的面具, INT
和QUIT
位设置为 1。~[HUP]
代表除 HUP
之外所有位都设置为 1 的掩码一点。
~[]
代表一个奇怪的参数值 new_set - 1
,这对我来说没有立即意义(因为 new_set
是一个指针)。我认为它以某种方式产生了一个包含所有元素的集合(所有位设置为 1)。
关于c - "~[]"有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47301092/