- 论坛徽章:
- 0
|
本人在SUSE8上写了一段时钟中断程序:
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <setjmp.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int, sighandler_t);
void Kill_Pro();
jmp_buf TimoutEnv;
void c_alrm( )
{
longjmp ( TimoutEnv , 1 ) ;
signal ( SIGALRM , SIG_DFL ) ;
}
main()
{
pid_t pid;
int times = 0;
// signal ( SIGALRM , SIG_DFL ) ;
signal ( SIGALRM , SIG_IGN ) ;
alarm(0);
if (setjmp (TimoutEnv) == 1 )
{
kill ( pid, SIGTERM );
printf("程序超时...\n"
return ( -2 ) ;
}
alarm(10) ;
signal ( SIGALRM , c_alrm ) ;
fflush ( stdout );
if(0 == (pid = fork()))
{
signal(SIGTERM,Kill_Pro);
while (1)
{
times++;
printf ( "%d", times );
fflush(stdout);
sleep(1);
}
}
// sleep(15);
for(;;
printf("结束。。。\n"
kill ( pid, SIGTERM );
return(0);
}
void Kill_Pro()
{
exit(0);
}
在运行时,超时后程序并不中断出来,我不知道为什么?请各位老大执教! |
|