2010-11-30 34 views
1

我對信號使用sigaction,我正在使用一個簡單的struct。我實際上是從手冊頁拿走它的。有人可以向我解釋結構中的第二行是什麼嗎?此外還有一個錯誤:Sigaction的使用和解釋

error: expected declaration specifiers or '...' before 'siginfo_t' 



#include <stdio.h> 
#include <string.h> 
#include <ctype.h> 
#include <stdlib.h> 
#include <math.h> 
#include <unistd.h> 
#include <assert.h> 
#include <getopt.h> 

#include <signal.h> 
#include <sys/time.h> 

#define _POSIX_C_SOURCE 200112L 
#define MAX_WORD 256 

void parseFile (FILE * fp, FILE *sketcher); 
void handle_timeout(int signal); 


struct sigaction { 
void  (*sa_handler)(int); 
    void  (*sa_sigaction)(int, siginfo_t *, void *); 
    sigset_t sa_mask; 
    int  sa_flags; 
    void  (*sa_restorer)(void); 
}; 
+0

在某些體系結構上涉及到一個union:不要同時分配sa_handler和sa_sigaction。 似乎他們是一樣的? – wliao 2010-11-30 03:55:40

回答

3

你不應該自己聲明struct sigaction。它在手冊頁中爲您提供信息,但它實際上是由<signal.h>聲明的。

結構中的第二行定義了一個函數指針(與第一行一樣,但是具有不同的類型)。

+0

謝謝。我應該更仔細地閱讀手冊頁。 :) – 2010-11-30 05:00:15