Доброго времени суток.
Возникла небольшая проблема :
make
cc part_signal.c -o part_signal
main.c: In function `set_signal':
main.c:25: warning: assignment from incompatible pointer type
Кусок "проблемного" кода :
void set_signal ( int sig, struct sigaction act, void (*handler)(int,siginfo_t *,void *) )
{
sigemptyset ( &(act.sa_mask) );
act.sa_handler = handler;
act.sa_flags = SA_SIGINFO;
.... //25'я строка act.sa_handler = handler;
Смотрел в man sigaction и в bits/sigaction.h
- везде написанно (int,siginfo_t *,void *).
Почему компилятор сообщает о несоответствии типов?
Спасибо!
Вообще sa_handler это указатель на на функцию с параметрами типа (int). а sa_sigation это указатель на функцию с (int,siginfo_t *,void *). У тебя же к одному присваивается другое. Вот тут:
act.sa_handler = handler;