C库函数 int raise(int sig) ,导致信号sig产生。sig 参数是与sig 宏兼容。
声明
以下是signal()函数的声明。
int raise(int sig)
参数
-
sig -- 这是信号发送。以下是几个重要的标准信号常数:
macro | 信号 |
---|---|
SIGABRT | (信号中止)异常终止,如发起abort函数。 |
SIGFPE | (信号浮点异常)的算术运算错误,如除以零或操作导致溢出(不一定是用浮点运算)。 |
SIGILL | (信号非法指令)无效的函数图像,如非法指令。这一般是由于在代码中的腐败或试图执行数据。 |
SIGINT | (信号中断)交互式注意信号。一般所产生的应用程序的用户。 |
SIGSEGV | (信号分割冲突)无效的存储访问:当程序尝试读取或写入内存外它是为其分配的。 |
SIGTERM | (信号终止)终止请求发送程序。 |
返回值
这个函数如果成功返回零,否则返回非零值。
例子
下面的例子显示了signal()函数的用法。
#include <signal.h> #include <stdio.h> void signal_catchfunc(int); int main() { int ret; ret = signal(SIGINT, signal_catchfunc); if( ret == SIG_ERR) { printf("Error: unable to set signal handler. "); exit(0); } printf("Going to raise a signal "); ret = raise(SIGINT); if( ret !=0 ) { printf("Error: unable to raise SIGINT signal. "); exit(0); } printf("Exiting... "); return(0); } void signal_catchfunc(int signal) { printf("!! signal caught !! "); }
让我们编译和运行上面的程序,这将产生以下结果:
Going to raise a signal !! signal caught !! Exiting...