Конечно, вы можете, но вам придется отправить его с sigqueue(2)
вместо kill(2)
. И вы можете отправить int
или sival_ptr
.
union sigval {
int sival_int;
void *sival_ptr;
};
Установить обработчик
struct sigaction sa;
sigemptyset(&sa.sa_mask);
sa.sa_sigaction = handler;
sa.sa_flags = SA_SIGINFO; /* Important. */
sigaction(SIGUSR1, &sa, NULL);
Обработчик для сигнала, установленного с использованием SA_SIGINFO
static void
handler(int sig, siginfo_t *si, void *ucontext)
{
si->si_value; /* This is what you're looking for. */
}
Отправка целого числа
union sigval sv;
sv.sival_int = 42;
sigqueue(pid, SIGUSR1, sv);