c - "~[]"有什么作用?

标签 c arrays linux

我看到了以下代码行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的面具, INTQUIT位设置为 1。~[HUP]代表除 HUP 之外所有位都设置为 1 的掩码一点。

~[]代表一个奇怪的参数值 new_set - 1 ,这对我来说没有立即意义(因为 new_set 是一个指针)。我认为它以某种方式产生了一个包含所有元素的集合(所有位设置为 1)。

关于c - "~[]"有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47301092/

相关文章:

c - 将用 C 编写的现有 Windows GUI 应用程序移植到 Linux 有哪些选择?

使用 CUDA 复制结构内的指针数组

javascript - 获取拖放区中选定文件的数量

python - 在 Python 中遍历锯齿状数组值和索引

linux - 在 shell 中从 shell 脚本声明变量

python - 1000 年(和其他年份)是闰年吗?

不能在 GCC 内联汇编中强制使用 64 位寄存器

c - 请解释一下C程序的这个功能是如何工作的?

linux - 如何编写 Linux 内核模块?

C 指针 : *ptr vs &ptr vs ptr