int raise(int sig)
优质
小牛编辑
139浏览
2023-12-01
描述 (Description)
C库函数int raise(int sig)导致生成信号sig 。 sig参数与SIG宏兼容。
声明 (Declaration)
以下是signal()函数的声明。
int raise(int sig)
参数 (Parameters)
sig - 这是要发送的信号编号。 以下是一些重要的标准信号常数 -
Sr.No. | 宏观和信号 |
---|---|
1 | SIGABRT (信号中止)异常终止,例如由中止功能启动。 |
2 | SIGFPE (信号浮点异常)错误的算术运算,例如零分频或导致溢出的运算(不一定是浮点运算)。 |
3 | SIGILL (信号非法指令)无效的功能图像,例如非法指令。 这通常是由于代码中的损坏或尝试执行数据。 |
4 | SIGINT (信号中断)交互式注意信号。 通常由应用程序用户生成。 |
5 | SIGSEGV (信号分段违规)对存储的无效访问 - 当程序试图在内存之外读取或写入时,会为其分配。 |
6 | SIGTERM (信号终止)发送到程序的终止请求。 |
返回值 (Return Value)
如果成功则该函数返回零,否则返回非零。
例子 (Example)
以下示例显示了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.\n");
exit(0);
}
printf("Going to raise a signal\n");
ret = raise(SIGINT);
if( ret !=0 ) {
printf("Error: unable to raise SIGINT signal.\n");
exit(0);
}
printf("Exiting...\n");
return(0);
}
void signal_catchfunc(int signal) {
printf("!! signal caught !!\n");
}
让我们编译并运行上面的程序来产生以下结果 -
Going to raise a signal
!! signal caught !!
Exiting...