我正在尝试使用 SIGRTMIN 信号在Android NDK中创建阻塞信号处理程序。
int startThread(){
pthread_t thread;
sigset_t set;
/* Block SIGRTMIN other threads created by main()
will inherit a copy of the signal mask. */
sigemptyset(&set);
int rc = sigaddset(&set, SIGRTMIN);
__android_log_print(ANDROID_LOG_DEBUG, "LOG", "Return Code:%d",rc);
__android_log_print(ANDROID_LOG_DEBUG, "LOG", "Error Code:%d",errno);
pthread_sigmask(SIG_BLOCK, &set, NULL);
pthread_create(&thread, NULL, &sig_thread, (void *) &set);
}
static void *sig_thread(void *arg)
{
sigset_t *set = arg;
int s, sig;
for (;;) {
s = sigwait(set, &sig);
__android_log_print(ANDROID_LOG_DEBUG, "LOG", "Signal handling thread got signal %d\n", sig);
}
}
在添加信号集sigaddset(&set, SIGRTMIN)
这是在x86
或armeabi-v7a
abi中发生的。如果我使用x86_64
,那就行了。
有什么方法可以解决此问题,或者在Android的x86/armeabi-v7a
abi中有什么替代方法?