1

funcシグナルsigが引数として与えられたときに関数を呼び出さなければならないこの割り当てでメソッドを実行する方法がわかりません。

  void set_sig_handler(int sig,void (*func)(int)){

ありがとう。

4

1 に答える 1

1

sigaction()を使用できます。ハンドラーには、次のいずれかの署名が必要です。

/* this one matches your function */
void (*sa_handler)(int);

/* use thhis one If SA_SIGINFO is specified */
void (*sa_sigaction)(int, siginfo_t *, void *);

例:

#include <signal.h>
....
void set_sig_handler(int sig, void (*func)(int))
{
    struct sigaction act= {0};

    /* set signal handler */
    act.sa_handler = func;

    if (sigaction(sig, &act, NULL) < 0) {
        perror ("sigaction");
        return 1;
    }
}
于 2012-11-25T16:00:47.030 に答える