- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 Solaris 平台上有一些遗留代码,我想将其移植到 Linux,但我在 Linux 上遇到一些编译错误。在 Solaris 上,我有以下代码片段:
#include <signal.h>
...
void f() {
struct sigaction a;
sigaction(sig,0,&a);
std::cout << (void *) a.sa_handler
<< ", " << (void *) a.sa_sigaction
<< ", " << a.sa_mask.__sigbits[0]
<< ", " << a.sa_mask.__sigbits[1]
<< ", " << a.sa_mask.__sigbits[2]
<< ", " << a.sa_mask.__sigbits[3]
<< ", " << (void *) a.sa_flags
<< std::endl;
}
当我尝试使用 gcc 4.9.2 在 Linux 上编译时(在 Solaris 上编译正常),我收到以下编译错误:
error: struct __sigset_t has no member named __sigbits
<< ", " << a.sa_mask.__sigbits[0]
... __sigbits[1]
、__sigbits[2]
、__sigbits[3]
也是如此。
Linux 中是否有任何等效项?
最佳答案
执行此操作的 POSIX 兼容方法是使用 sigismember
函数。
int i;
for (i=0; i<32; i++) {
printf("signal %d masked: %s\n", i, sigismember(&a.sa_mask, i) ? "yes", "no");
}
关于c - sigaction 和 sigset_t 在 Solaris 和 Linux 之间的可移植性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43345802/
我正在尝试实现一个带有信号处理程序的简单服务器/客户端。 我对信号的唯一用途是 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()
我是一名优秀的程序员,十分优秀!