UNIX系统中C语言信号处理全解析
1. 信号处理基础
在UNIX系统中,标准命令解释器(如Bourne和C shell)在后台启动进程时,会忽略键盘生成的信号。这是因为键盘生成的信号通常会发送给从终端启动的所有进程,如果不忽略,按下中断键会终止后台进程和目标进程。
信号可以被用户自定义的例程捕获和处理。在 signal 调用中提供指向该例程的指针,当首次接收到信号时,该例程将被调用处理信号。信号处理例程会接收一个整数参数,指示接收到的信号。通过将该整数与 signal.h 中的常量进行比较,程序员可以编写通用的信号处理程序。
以下是一个简单的示例程序 ouch1 ,用于捕获中断信号并打印“OUCH”:
#include <signal.h>
main()
{
/*
* Declare handler routine so we can use its
* name.
*/
extern int handler();
/*
* Send signal to handler routine.
*/
signal(SIGINT, handler);
/*
* Loop here.
*/
for (;;)
pause();
}
/*
* handler - handle the signal.
*/
handler()
{
超级会员免费看
订阅专栏 解锁全文
1319

被折叠的 条评论
为什么被折叠?



