signal.h是C标准函数库中的信号处理部分, 定义了程序执行时如何处理不同的信号。信号用作进程间通信, 报告异常行为(如除零)、用户的一些按键组合(如同时按下Ctrl与C键,产生信号SIGINT)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
/* signal.h Definitions for ANSI defined signaling capability */ /* * C/C++ Run Time Library - Version 11.0 * * Copyright (c) 1988, 2002 by Borland Software Corporation * All Rights Reserved. * */ /* $Revision: 9.8.2.1 $ */ #ifndef __SIGNAL_H #define __SIGNAL_H #include <_stddef.h> #if !defined(RC_INVOKED) #if defined(__STDC__) #pragma warn -nak #endif #endif /* !RC_INVOKED */ /* _SIGCONTEXT contains exception info for WIN32 exceptions that were caught and turned into signals. There will always be three 32-bit parameters passed to the user's signal handler. Unused parameters will be 0. The _PSIGCONTEXT parameter will always be the last (third) parameter. */ typedef struct { struct _EXCEPTION_RECORD * _pexecptionrecord; /* defined in WINNT.H */ struct _CONTEXT * _pcontext; /* defined in WINNT.H */ unsigned long _result; /* return value for the SEH */ } _SIGCONTEXT, *_PSIGCONTEXT; #ifdef __cplusplus namespace std { #endif /* __cplusplus */ typedef int sig_atomic_t; /* Atomic entity type (ANSI) */ #ifdef __cplusplus typedef void _USERENTRY (_EXPFUNC * _CatcherPTR)(int); #else typedef void _USERENTRY (_EXPFUNC * _CatcherPTR)(); #endif #define SIG_DFL ((_CatcherPTR)0) /* Default action */ #define SIG_IGN ((_CatcherPTR)1) /* Ignore action */ #define SIG_ERR ((_CatcherPTR)-1) /* Error return */ #define SIGABRT 22 #define SIGFPE 8 /* Floating point trap */ #define SIGILL 4 /* Illegal instruction */ #define SIGINT 2 #define SIGSEGV 11 /* Memory access violation */ #define SIGTERM 15 #define SIGUSR1 16 /* User-defined signal 1 */ #define SIGUSR2 17 /* User-defined signal 2 */ #define SIGUSR3 20 /* User-defined signal 3 */ #define SIGBREAK 21 /* Control-Break interrupt */ #ifdef __cplusplus extern "C" { #endif int _RTLENTRY _EXPFUNC raise(int __sig); #ifdef __cplusplus void (_USERENTRY * _RTLENTRY _EXPFUNC32 signal(int __sig, void (_USERENTRY * __func)(int))) (int); } #else void (_USERENTRY * _RTLENTRY _EXPFUNC32 signal(int __sig, void (_USERENTRY * __func)())) (int); #endif #if !defined(__STDC__) #define NSIG 23 /* highest defined signal no. + 1 */ #endif #if !defined(RC_INVOKED) #if defined(__STDC__) #pragma warn .nak #endif #endif /* !RC_INVOKED */ #ifdef __cplusplus } // std #endif /* __cplusplus */ #endif /* __SIGNAL_H */ #if defined(__cplusplus) && !defined(__USING_CNAME__) && !defined(__SIGNAL_H_USING_LIST) #define __SIGNAL_H_USING_LIST using std::_CatcherPTR; using std::sig_atomic_t; using std::raise; using std::signal; #endif /* __USING_CNAME__ */ |