raise() 函数定义在 signal.h 头文件中。它有助于引发参数中指定的信号,并且与 SIG 宏兼容。
int raise(int sig); #where sig should be in integer
raise() 函数接受一个信号编号作为其参数。一些重要的标准信号编号是:
| 参数 | 描述 | 必需/可选 |
|---|---|---|
| sig | 要发送的信号编号 | 必需 |
raise() 函数成功时返回零,失败时返回非零。如果传入的参数不是有效信号,则会调用无效参数处理程序。
| 输入 | 返回值 |
|---|---|
| 如果成功 | 零 |
| 如果失败 | 非零 |
#include <stdio.h>
#include <signal.h>
void signal_catchfunc(int);
int main () {
int output;
output = signal(SIGINT, signal_catchfunc);
if( output == SIG_ERR) {
printf("Error: unable to set signal handler.\n");
exit(0);
}
printf("Signal is raising...\n");
output = raise(SIGINT);
if( output !=0 ) {
printf("Error: unable to raise SIGINT signal.\n");
exit(0);
}
printf("Going to Exit...\n");
return(0);
}
void signal_catchfunc(int signal) {
printf("! The is signal caught !\n");
}
输出
Signal is raising... ! The is signal caught ! Going to Exit...
#include <stdio.h>
#include <signal.h>
void signal_handler(int sig)
{
if (sig == SIGUSR1) printf("SIGUSR1 signal is Received.. \n");
exit(0);
}
int main(int argc, const char * argv[])
{
printf("Signal handler is registering..\n");
signal(SIGUSR1, signal_handler);
printf("SIGUSR1 signal is Raising..\n");
raise(SIGUSR1);
printf("Finished main\n");
return 0;
}
输出
Signal handler is registering.. SIGUSR1 signal is Raising.. SIGUSR1 signal is Received..