69,368
社区成员
发帖
与我相关
我的任务
分享
#include <signal.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h> //STDERR_FILENO
#define PROMPT "你想终止程序吗? "
#define N 20
#define M 10
char *prompt=PROMPT;
void ctrl_c_op(int signo)
{
write(STDERR_FILENO, prompt, strlen(prompt));
alarm(M);//时钟,M秒后退出
printf("[%d] 秒以后退出。", M);fflush(NULL);
}
int main()
{
int i;
struct sigaction act;
act.sa_handler=ctrl_c_op; //注册信号处理函数,信号的默认动作被屏蔽
sigemptyset(&act.sa_mask);
act.sa_flags=0;
//alarm(5);//时钟
if(sigaction(SIGINT, &act, NULL)<0)
{
fprintf(stderr,"Install Signal Action Error:%s\n\a",strerror(errno));
exit(1);
}
for(i=0; i<N; i++)
{
sleep(1);
printf("%4d", N-i);fflush(NULL);
}
}