linux alarm函数简介

来源:互联网 发布:c 端口映射 源码下载 编辑:程序博客网 时间:2024/06/03 16:35

        上代码:

#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <signal.h>int main(int argc, char *argv[]) { alarm(5);sleep(20); printf("end!\n"); return 0; }
         运行5秒后, 内核向进程发出SIGALRM信息, 进程被终止, 所以上述程序的结果是:Alarm clock

         当然, 我们也可以人为定义信号处理函数, 如下:

#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <signal.h>void sig_alarm(int sig) { printf("sig is %d, sig_alarm is called\n", sig);}int main(int argc, char *argv[]) { signal(SIGALRM, sig_alarm); // 注册alarm信号对应的函数  alarm(5);  // 5秒后,内核向进程发出alarm信号, 执行对应的信号注册函数sleep(20); printf("end!\n"); return 0; }
         结果:

sig is 14, sig_alarm is called
end!

        可以看到, 内核向应用进程发出SIGALRM信号, 执行对应的注册函数, 而非杀死进程。


        很简单, 先说这么多。