gpt4 book ai didi

c - 如何正确使用 SIGALRM?

转载 作者:太空狗 更新时间:2023-10-29 16:02:14 26 4
gpt4 key购买 nike

我编写了这段代码,我必须使用警报信号 (SIGALRM) 让程序打印消息“我还活着”。每 3 秒一次。

但它不起作用,只有当我按下 CTR-C 时它才会发送消息“我还活着”,我猜我没有把 SIGALRM 函数放在正确的位置,你能帮我吗?

#include <stdlib.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

unsigned Count = 0; //Counts the number of times it receives the signal SIGINT.
void mypause(int sign); //prototype of the function my pause.

void mypause(int sign) {
signal(SIGALRM, mypause); //Set alarm clock for 3 seconds.
alarm(3);
printf("I'm Alive");
signal(SIGINT, mypause);
switch (sign) {
case SIGINT:
printf("\nPressed CTR-C\n");
printf("I'm running, waiting for a sign\n");
Count++;
break;
case SIGQUIT:
printf("\nPressed CTR-\\n");
printf("You pressed CTR-C %d times", Conta);
exit(0); //Exit program.
break;
}
}

int main() {
signal(SIGALRM, mypause);
signal(SIGINT, mypause);
signal(SIGQUIT, mypause);
printf("\nI'm running waiting for a signal\n");
while (1) {}
return (0);
}

最佳答案

也许在你的 main() 中添加 alarm(3)

关于c - 如何正确使用 SIGALRM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com