#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
void myfunc(int i);
int main(int argc, char *argv[])
{
int ret1,ret2;
if (argc>1)
{
if(atoi(argv[1])!=0)
{
if (signal(SIGALRM, myfunc) ==SIG_ERR)
printf("can not catch signal SIGALRM\n");
}
}
ret1=alarm(10);
printf("ret1= %d, alarm(10)\n", ret1);
// sleep(5);
// ret2=alarm(10);
// printf("ret2= %d, alarm(10)\n", ret2);
pause();
return 0;
}
void myfunc(int i)
{
if(i==SIGALRM)
{
printf("Time Up!\n");
}
}
执行:
administrator@ubuntu:~/test$ ./al
ret1= 0, alarm(10)闹钟
administrator@ubuntu:~/test$
设置了处理函数以后,之前的默认行为为什么还会执行呢。