位置:首頁 > 高級語言 > C語言標準庫 > raise() - C函數

raise() - C函數

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