Кто-нибудь может объяснить, что это должно делать:
void (*signal(int sig, void (*func)(int)) ) (int);
Это определение взято из стандартной библиотеки сигналов.