- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
对于家庭作业,我必须只使用 linux
系统调用来管理游戏中的信号,用 C
编程。我必须做的一件事是在 thread
中无限期调用 sigsuspend 并等待 SIGALRM
,然后如果有 sigalarm(信号警报)我必须 printf()
一些东西(不管是什么)。
但是,我尝试了几种方法但没有用,我不知道如何“deblock”
sigsuspend 并打印我想要的内容。并且游戏中有一个发送信号的计时器。我的代码有效,但不是带有 sigsuspend
的部分当然,我还有一个 sigarlm
处理程序,它在接收到 sigarlm
时用 SDL
做一些事情。我真的不知道如何将掩码与 sigsuspend
代码:
//initialising sigaction struct
int init (void)
{
// Signal handler
sigact.sa_handler = sigalrm_handler;
sigact.sa_flags = 0;
sigemptyset(&sigact.sa_mask);
// Linked list
head = NULL;
sigaction(SIGALRM, &sigact, NULL);
pthread_create(&tid_sigrecv, NULL, (void *)deamon, NULL);
return 1; // Implementation ready ?
}
信号暂停部分
void deamon(void * arg)
{
int sig;
while(1) {
sigset_t mask;
sigemptyset(&mask);
sigaddset(&mask, SIGALRM);
sigsuspend(&mask);
printf("in thread\n");
}
}
目前它只在收到 sigarlm
时不打印“in thread”,我应该怎么做才能正确使用 sigsuspend
? 我有义务使用sigsuspend
最佳答案
由于 sigsuspend()
,您创建了一个应该等待信号 SIGALRM
的线程,但是您却向所有信号打开线程 but SIGALRM
。
替换
sigemptyset(&mask); // clear mask
sigaddset(&mask, SIGALRM); // set mask to SIGALRM
sigsuspend(&mask); // wait for any signal but blocks SIGALRM
与
sigfillset(&mask); // mask set to all signals
sigdelset(&mask, SIGALRM); // remove SIGALRM from the mask
sigsuspend(&mask); // block all signals but SIGALRM
这样 sigsuspend()
等待一个非阻塞信号 (SIGALRM)。
为了测试,您可以使用 SIGALRM
信号向线程发送
pthread_kill(tid_sigrecv, SIGALRM);
例如,来自主线程。
关于C - 在线程中使用 sigsuspend 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47729720/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!