2010-11-30 12 views
1

私はシグナルにsigactionを使用しています。私はそれに対して単純な構造体を使用しています。私は実際にマニュアルページからそれを取り出しました。誰かが私に説明することができます構造体の2行目は何ですか?また、エラーがあります: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

一部のアーキテクチャでは、ユニオンが関与しています。つまり、sa_handlerとsa_sigactionの両方に割り当てないでください。 彼らは同じようですか? – wliao

答えて

3

あなたがstruct sigactionを自分で宣言することになっていません。あなたの情報については、マニュアルページに記載されていますが、実際には<signal.h>によって宣言されています。

構造体の2行目は、関数ポインタを定義します(最初の型と同じですが、型が異なります)。

+0

ありがとうございます。マニュアルページをもっと慎重に読んでいたはずです。 :) –