Linux 信号详解四(pause,alarm)
pause函数 --将进程置为可中断睡眠状态,然后它调用内核函数schedule(),使linux进程调度器找到另一个进程来运行。 --pause使调用者进程挂起,直到一个信号被捕获。
alarm函数
--设置一个闹钟延迟发送信号,告诉linux内核n秒以后,发送SIGALRM信号。
//kill 函数 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> #include <sys/wait.h> #include <signal.h> void catch_signal(int sig) { switch(sig) { case SIGALRM: printf("sigalrm have recv !\n"); alarm(1); } } int main(int arg,char *args[]) { //注册信号 if(signal(SIGALRM,catch_signal)==SIG_ERR) { perror("signal error"); return -1; } //一个alarm()函数只会发送一次信号 alarm(1); while(1) { pause(); printf("accept !\n"); } printf("game over!\n"); return 0; }