- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
来自man sigprocmask
:
"If oset is not null, it is set to the previous value of the signal mask."
我的问题:无需运行或调试程序,
执行第 10 行后,旧信号掩码的值被存储到 y
中。由于在执行该行之前没有阻塞信号,那么y
的值是多少?
有没有办法在执行第14行后确定z
的值?
1 void my_sig_handler(int sig){
2 write(1, "a", 1);
3 }
4 int main(){
5 signal(SIGINT, my_sig_handler);
6 sigset_t x, y, z;
7 sigemptyset(&x);
8 sigaddset(&x, SIGINT);
9
10 sigprocmask(SIG_BLOCK, &x, &y);
11 write(1,"1",1);
12 do_some_work();
13 write(1,"2",1);
14 sigprocmask(SIG_SETMASK, &y, &z);
15
16 exit(0);
17 }
最佳答案
您可以使用sigismember
测试信号集中的成员资格。历史上 POSIX 省略了一种方法来识别可能是您需要测试的信号编号的值范围,但所有历史系统都定义了 _NSIG
或 NSIG
来告诉您这一点, future 的 POSIX 正在添加它。
请注意,通常不能假设第 10 行后 y
为空,因为信号掩码是在 fork
/exec
之间继承的。您的程序可能已在某些信号被屏蔽的情况下启动。
关于c - sigprocmask 之后 sigset_t 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59013574/
我正在尝试实现一个带有信号处理程序的简单服务器/客户端。 我对信号的唯一用途是 sigaction(SIG...,&sig,NULL),其中: sig.sa_sigaction = &closeSig
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: What does a type followed by _t (underscore-t) represe
sigset_t new,old; sigemptyset(&new); sigaddset(&new, SIGINT); sigaddset(&new, SIGTSTP); sigprocmask(
来自man sigprocmask: "If oset is not null, it is set to the previous value of the signal mask." 我的问题:无
海合会 (海湾合作委员会) 4.6.0 c89 我有一个这样声明的信号处理程序: /* Setup signal handler */ struct sigaction new_acti
如果我用 std=c99 编译下面的程序,我会得到一个错误,但是程序在没有 c99 标志的情况下编译得很好。为什么? #include void x() { sigset_t dd; } i
我想补充我程序中的信号集。只提供了一些位操作API,如sigorset() sigandset() 是否有任何 API 可以找到一个信号集的补充? 最佳答案 您可能指的是 sigsetops ,它为信
我正在努力学习更多关于 Rust 中的 FFI 并链接到 C 库,特别是 libc。在我的“探索”过程中,我遇到了以下问题。 C 中的正常模式 void(* sig_set(int sig, void
我正在努力学习更多关于 Rust 中的 FFI 并链接到 C 库,特别是 libc。在我的“探索”过程中,我遇到了以下问题。 C 中的正常模式 void(* sig_set(int sig, void
我在 Solaris 平台上有一些遗留代码,我想将其移植到 Linux,但我在 Linux 上遇到一些编译错误。在 Solaris 上,我有以下代码片段: #include ... void f()
我是一名优秀的程序员,十分优秀!