⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 signal.h

📁 C语言库函数介绍
💻 H
字号:
@函数名称:     signal
函数原型:     void (*signal(int sig,void(*sigfun)(int)))(int);
函数功能:     函数建立一个信号处理器.在信号sig出现时,函数sigfun将被调用,并使用sig作为其实参.最后signal返回原来的信号处理器(出错时回SIG_ERR).有两个特殊的信号处理函数SIG_IGN(忽略信号)和SIG_DFL(执                行默认动作)
函数返回:     
参数说明:     C++支持许多信号处理函数,如一表
              信号                条件
              SIGABRT             异常终止
              SIGFPE              被除数为0或者溢出
              SIGILL              非法指令
              SIGINT              中断
              SIGSEGV             非法内存引用
              SIGTERM             终止信号
所属文件:     <signal.h>

#pragma inline
#include <stdio.h>
#include <signal.h>
void Catcher(int sig, int type, int *reglist)
{
    printf("Caught it!");
    *(reglist + 8) = 3;
}
    int main()
{
    signal(SIGFPE, Catcher);
    asm     mov     ax,07FFFH
    asm     inc     ax
    asm     into
    asm     dec     ax
    asm     into
    return 0;
}


@函数名称:     raise
函数原型:     int raise(int sig);
函数功能:     函数生成信号sig.如果成功,函数返回0;否则返回一个非零值.
函数返回:     
参数说明:     C++支持许多信号处理函数,如一表
              信号                条件
              SIGABRT             异常终止
              SIGFPE              被除数为0或者溢出
              SIGILL              非法指令
              SIGINT              中断
              SIGSEGV             非法内存引用
              SIGTERM             终止信号
              要了解详细信号列表,请参考编译器的参考手册
所属文件:     <signal.h>

/*
 * This program waits until a SIGINT signal
 * is received.
 */
#include <stdio.h>
#include <signal.h>

sig_atomic_t signal_count;
sig_atomic_t signal_number;

static void alarm_handler(int signum)
  {
    ++signal_count;
    signal_number=signum;
  }

int main()
  {
    unsigned long i;
    signal_count=0;
    signal_number=0;
    signal(SIGINT,alarm_handler);
    printf("Signal will be auto-raised on iteration 10000 or hit CTRL+C.\n");
    printf("Iteration:\t");
    for(i=0;i<100000;++i)
    {
      printf("\b\b\b\b\b%*d",5,i);
      if(i==10000)raise(SIGINT);
      if(signal_count>0)break;
    }
    if(i==100000){
      printf("\nNo signal was raised.\n");
    } else if(i==10000){
      printf("\nSignal %d was raised by the raise() function.\n", signal_number);
    } else {
      printf("\nUser raised the signal.\n",signal_number);
    }
    return 0;
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -