Можете ли вы передать аргумент sigaction? - PullRequest
8 голосов
/ 04 декабря 2009

Я заметил в определении обратного вызова sigaction, sa_sigaction, последний аргумент void *.

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

Это как бы указывает на то, что вы можете передать пользовательский аргумент обработчику sa_sigaction.

Однако мне не удалось найти пример этого.

Кто-нибудь знает, можно ли передать аргумент в функцию обратного вызова sigaction? а у вас есть простой пример?

1 Ответ

13 голосов
/ 04 декабря 2009

К сожалению нет. Хотя подпись void *, на самом деле это ucontext_t. Из единой спецификации UNIX:

третий аргумент может быть приведен к указателю на объект типа ucontext_t для ссылки на контекст принимающего процесса, который был прерван при доставке сигнала

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...