- 论坛徽章:
- 0
|
我指的是在同一个进程中,它们会不会相互影响?虽然有点自找麻烦的嫌疑![](static/image/smiley/default/icon_mrgreen.gif)
测试代码:
- #include<stdio.h>
- #include<sys/time.h>
- #include<signal.h>
- int sec;
- void handle()
- {
- printf("THIS is alarm timer!\n");
- signal(SIGALRM,handle);
- alarm(10);
- }
- void sigroutine(int signo)
- {
- switch (signo){
- case SIGALRM:
- printf("Catch a signal -- SIGALRM \n");
- signal(SIGALRM, sigroutine);
- break;
- case SIGVTALRM:
- printf("Catch a signal -- SIGVTALRM \n");
- signal(SIGVTALRM, sigroutine);
- break;
- }
- return;
- }
- int main()
- {
- struct itimerval value, ovalue, value2;
- sec = 5;
- printf("process id is %d\n", getpid());
- signal(SIGALRM, handle);
- alarm(10);
- signal(SIGVTALRM, sigroutine);
- value2.it_value.tv_sec = 1;
- value2.it_value.tv_usec = 0;
- value2.it_interval.tv_sec = 1;
- value2.it_interval.tv_usec = 0;
- setitimer(ITIMER_VIRTUAL, &value2, &ovalue);
- for(;;)
- ;
- }
复制代码
结果:
- process id is 25819
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- THIS is alarm timer!
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- Catch a signal -- SIGVTALRM
- THIS is alarm timer!
- Catch a signal -- SIGVTALRM
复制代码
[ 本帖最后由 ruoyisiyu 于 2008-1-22 10:49 编辑 ] |
|