[英]Don't understand signal
誰能告訴我這行的作用:
if(signal(SIGUSR1, handler) == (sighandler_t)-1)
這是我從練習中復制的一行,使它起作用,但我不太了解。 有人可以向我解釋嗎? (實際上是我不理解的第二部分:(sighandler_t)-1的值是什么?)
謝謝 :)
編輯:sighandler_t來自
typedef void (*sighandler_t)(int);
首先,這是一種不好的風格,可能是不可移植的代碼, (sighandler_t)-1
應該替換為預定義的信號配置之一。 在我的系統上,它們以以下方式聲明
/* Fake signal functions. */
#define SIG_ERR ((__sighandler_t) -1) /* Error return. */
#define SIG_DFL ((__sighandler_t) 0) /* Default action. */
#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */
其他系統可能使用其他值,因此假設您使用相同的定義,我們將獲得下一個代碼:
if(signal(SIGUSR1, handler) == SIG_ERR) {
/* got problem */
} else {
/* handler installed */
}
此代碼將函數handler
程序安裝為信號SIGUSR1
handler
程序,並檢查返回的值以確保成功完成。 handler
必須聲明為void handler(int signo);
(sighandler_t)-1
是負數,將其轉換為sighandler_t
類型。 您必須檢查信號呼叫是否失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.