raise() – C函数
C库函数 int raise(int sig) ,导致信号sig产生。sig 参数是与sig 宏兼容。
声明
以下是signal()函数的声明。
intraise(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...