當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 raise()用法及代碼示例



描述

C庫函數int raise(int sig)引起信號sig要生成。這sig參數與 SIG 宏兼容。

聲明

以下是 signal() 函數的聲明。

int raise(int sig)

參數

  • sig− 這是要發送的信號編號。以下是幾個重要的標準信號常數 -

不。 宏和信號
1

SIGABRT

(Signal Abort) 異常終止,例如由 abort 函數發起。

2

SIGFPE

(信號浮點異常)錯誤的算術運算,例如零除或導致溢出的運算(不一定是浮點運算)。

3

SIGILL

(信號非法指令)無效的函數圖像,例如非法指令。這通常是由於代碼損壞或嘗試執行數據所致。

4

SIGINT

(信號中斷)交互式注意信號。通常由應用程序用戶生成。

5

SIGSEGV

(Signal Segmentation Violation) Invalid access to storage - 當程序試圖在內存之外讀取或寫入時,它會被分配給它。

6

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.\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...

相關用法


注:本文由純淨天空篩選整理自 C library function - raise()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。