alarm就是给系统发一个请求,多久之后发送一个alarm信号给我。
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
/**
* https://man7.org/linux/man-pages/man2/alarm.2.html
* https://man7.org/linux/man-pages/man7/signal.7.html
*
*
*/
void handler(int sig, siginfo_t *info, void *ucontext) {
printf("signal handler %d \n", sig);
printf("info->si_signo %d \n", info->si_signo);
printf("info->si_code %d \n", info->si_code);
}
int main() {
struct sigaction act = { 0 };
act.sa_flags = SA_SIGINFO;
act.sa_sigaction = &handler;
if (sigaction(SIGALRM, &act, NULL) == -1) {
perror("sigaction");
exit(EXIT_FAILURE);
}
alarm(2);
pause();
alarm(2);
pause();
alarm(2);
pause();
printf("ok\n");
return EXIT_SUCCESS;
}
pause()是阻塞当前线程,等待信号量的到来。