2026/2/1 15:47:17
网站建设
项目流程
网站建设找祥赢,给一个免费的网站,江西网站开发公司电话,营销型网站建设和平台建设UNIX系统中C语言的信号处理 1. 背景知识 在UNIX系统中,当一个进程在后台启动时,标准命令解释器(如Bourne和C shell)会发出调用以忽略键盘生成的信号。这是为了避免按下中断键时,不仅终止预期的进程,还终止后台进程。因为键盘生成的信号通常会发送到从终端启动的所有进程…UNIX系统中C语言的信号处理1. 背景知识在UNIX系统中,当一个进程在后台启动时,标准命令解释器(如Bourne和C shell)会发出调用以忽略键盘生成的信号。这是为了避免按下中断键时,不仅终止预期的进程,还终止后台进程。因为键盘生成的信号通常会发送到从终端启动的所有进程。2. 信号捕获可以通过在signal调用中提供指向用户例程的指针来捕获和处理信号。当第一次接收到信号时,该例程将被调用以处理该信号。信号处理程序被调用时,会传递一个整数参数,指示接收到的是哪个信号。这个整数可以与signal.h中的常量进行比较,从而使程序员能够编写通用的信号处理程序。以下是捕获中断信号并打印 “OUCH” 的示例代码:#include signal.h main() { extern int handler(); signal(SIGINT, handler); for (;;) pause(); } handler() { printf("OUCH\n"); }在非Berkeley系统中,如果第二次按下中断键,程序将退出,因为信号没有被重置。为了每次按下中断键都打印 “OUCH”,可以添加一行代码来重置信号:#include signal.h main() { extern int ha