Understanding the signal method in C.

Here it is:
1.) extern void (*signal(int sig, void (*func) (int)))(int);
we are declaring signal.
2.) extern void (*signal(int sig, void (*func) (int)))(int);
as a function with two arguments
3.) extern void (*signal(int sig, void (*func) (int)))(int);
the first argument is named sig and of type int
4.) extern void (*signal(int sig, void (*func) (int)))(int);
the second argument is named func and of type 'pointer to function with argument of type int, returning void'
5.) extern void (*signal(int sig, void (*func) (int)))(int);
signal returns a pointer to function with argument of type int, returning void

Taken from here.

Also a good resource here.