#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void catch_int(int sig_num){
signal(SIGINT,catch_int);//再次设置信号回调函数。ctrl+c:INT信号,ctrl+Z:挂起,TSTP信号.ctrl+\:发送BRT信号,进程立即中止,类似于ctrl-c,但灵活性更强
printf("ctrl+c press!\n"); //ctrl+c失去作用,在此仅打印
fflush(stdout);
}
//深未来技术 http://deepfuture.iteye.com
void catch_alarm(int sig_num){
printf("timeout,bye!\n");
alarm(0);//清除定时器
exit(0);
}
int main(void){
int x;
signal(SIGALRM,catch_alarm); //定时器信号
signal(SIGINT,catch_int); //设置ctrl-c信号的回调函数是catch_int,以拦截ctrl-c。
printf("please input an integer:");
fflush(stdout);
alarm(20);//20秒时限
scanf("%d",&x);//20秒内用户输入一个数
printf("integer is :%d\n",x);
return 0;
}
knoppix@Microknoppix:/mnt-system/deepfuture$ gcc -o test9 test9.c
test9.c: In function 'catch_alarm':
test9.c:14: warning: incompatible implicit declaration of built-in function 'exit'
knoppix@Microknoppix:/mnt-system/deepfuture$ ./test9
please input an integer:^Cctrl+c press!
^Cctrl+c press!
^Cctrl+c press!
^Cctrl+c press!
timeout,bye!
分享到:
相关推荐
### Linux下C语言编程——信号处理函数 #### 一、信号的基本概念与产生 在Linux系统中,**信号**是一种轻量级的进程间通信机制,用于通知接收进程某个特定事件的发生。它不仅可以由硬件异常(如除零错误)触发,也...
linux下C编程各种API接口,查找非常方便,并且还有实例,我也是借花谢佛,不知道是哪位大佬整理的,这么好的资源应该跟大家一起分享! 1 字符测试篇 2 字符串转换篇 3 内存控制篇 4 日期时间篇 5 内存及字符...
linux中常用API详细介绍,包含应用例程 1 字符测试篇 2 2 字符串转换篇 10 3 内存控制篇 17 4 日期时间篇 22 5 内存及字符串操作篇 28 ...13 信号处理篇 153 14 接口处理篇 166 15 环境变量篇 184 16 终端控制篇 186
- 了解Linux下的时间函数,如`time()`、`clock_gettime()`,以及如何处理时区和日期格式化。 2. **信号处理**: - 信号是Linux系统中进程间的一种通信方式,用于通知接收进程发生了某个事件。 - 学习如何捕获和...
### Linux多线程应用中如何编写安全的信号处理函数 #### 概述 在Linux多线程编程中,正确处理信号对于确保程序的稳定性和安全性至关重要。本文将深入探讨如何在多线程环境中编写安全的信号处理函数,尤其是在程序...
### Linux系统调用-- recv/recvfrom 函数详解 #### 功能描述 `recv` 和 `recvfrom` 是两个用于从套接字接收数据的重要函数。`recv` 主要用于面向连接的套接字(例如TCP),而 `recvfrom` 可以用于面向连接和无连接...
《QNX-UNIX-POSIX-C函数手册》是一份针对编程初学者的宝贵资源,尤其适合那些在Linux环境中使用C语言进行开发的程序员。这份手册详细介绍了C语言标准库以及与QNX、UNIX和POSIX操作系统相关的扩展函数,旨在帮助...
除了上述内容,还有许多高级主题,如信号处理、线程编程、内存管理、网络编程等,都是Linux下C语言开发中不可或缺的知识。通过阅读《Linux下C语言》这本书,你可以更深入地了解这些主题,提高你的编程技能。 总的来...
本文将深入探讨Linux系统与C语言的结合,帮助读者掌握在Linux下编写C程序的关键知识点。 首先,了解Linux操作系统是必要的。Linux是一种开源、自由的操作系统,基于Unix,提供了一个强大的命令行接口(CLI)和图形...
本压缩包"Linux-C.rar"正是针对Linux系统下C语言编程的参考资料,包括两个文件:Linux_C函数.pdf和Linux C函数使用手册.chm,这两个文档都是中文版,方便了国内开发者学习和查阅。 Linux C函数是进行Linux系统编程...
4. **信号处理**:信号是进程间通信的一种方式,`signal()`或`sigaction()`用于注册信号处理函数,`raise()`发送信号给当前进程,`kill()`向指定进程发送信号。 5. **内存管理**:`malloc()`和`free()`负责动态内存...
"Linux C课件"涵盖了这一关键领域的知识,帮助学习者掌握在Linux环境下使用C语言进行程序设计的基础与进阶技巧。 1. **Linux环境介绍** - Linux是一种自由开放的操作系统,基于Unix,具有高度可定制性和稳定性。 ...
在Linux/UNIX环境中,信号自早期版本起就被引入,并随着时间的推移逐渐演变为可靠的通信手段,尽管在不同的实现中存在一些不兼容性,但POSIX.1标准的制定统一了可靠信号的处理。 信号的机制类似于硬件中断,但它们...
"Linux平台C语言信号和槽的实现"是一个项目,它旨在在不依赖Qt库的情况下,使用C语言模仿Qt的信号和槽机制。Qt的信号与槽是用于对象间通信的一种强大机制,但它们是用C++实现的,而此项目则是将其概念应用到C语言中...
8. **信号处理**:信号是Linux系统中进程间通信的一种方式,书中会讲解signal()、sigaction()等函数,以及如何捕获和处理信号。 9. **系统调用**:Linux提供了一系列系统调用供用户空间的程序使用,如read()、write...
6. **信号处理**:解释如何捕获和处理操作系统发送的信号,如signal, raise等函数。 7. **内存管理**:包括动态内存分配(malloc, calloc, realloc, free)以及内存对齐的相关知识。 8. **I/O流**:讲解stdio流的...
在Linux操作系统中,信号(Signal)是一种...通过对Linux信号和C语言信号函数的深入理解和实践,可以编写出能够有效响应系统事件和异常的健壮程序。在实际开发中,合理利用信号机制能够增强程序的容错性和可维护性。