2010-12-02 13 views

Respuesta

3

de inicio con el nombre:

signal 

Ir a la derecha en la medida de lo que pueda:

signal(int sig, void (*func)(int)) 

Usted tiene una lista entre paréntesis de los parámetros, por lo que es una función de tomar 2 parámetros: un int llamado sig y un puntero a la función llamado func (puede analizarlo de la misma manera más adelante).

A continuación, golpeó a otro rightparen, por lo que ir a la izquierda:

*signal(int sig, void (*func)(int)) 

Por lo tanto la función signal devuelve un puntero a ... algo. Vamos a acabar con los paréntesis y vaya a la derecha de nuevo, ya que pueden:

(*signal(int sig, void (*func)(int))) (int) 

Tenemos de nuevo una lista entre paréntesis de argumentos, por lo signal devuelve un puntero a la función que toma un int como un único argumento.A continuación, vaya a la izquierda de nuevo:

void (*signal(int sig, void (*func)(int))) (int) 

Así, la función signal devuelve el puntero a la función de tomar y devolver intvoid.

Sí, este lenguaje es raro, pero al menos es consistente. :)

4

La función signal toma como argumentos:

int sig - a signal value 
void (*func)(int) - a pointer to a function that takes an int and returns void 

y devuelve:

void (*)(int) - a function that takes an int and returns void 

signal registra una función a ser llamada cuando se produce la señal y devuelve el manejador de la función anterior.

0

La página del manual hace esta declaración más fácil de entender mediante la introducción de un typedef como:

typedef void (*sighandler_t)(int); 

sighandler_t signal(int signum, sighandler_t handler); 

sighandler_t se define como un puntero a una función que acepta un int y devuelve void.

signal es una función que acepta un int (número de señal) y un puntero de función y devuelve un puntero a la función.

1

Básicamente, permite decidir cómo manejar una señal específica (identificada por el argumento int sig) enviada a su programa.

El void (*func)(int) es un puntero a la función que se encargará de la señal (puede proporcionar una personalizada o utilizar SIG_DFLSIG_IGN cuales son acciones predeterminadas para gestionar normalmente o ignorarla).

La función signal devuelve el puntero al controlador presente ANTES de la llamada de esta función o SIG_ERR es un error. Esto se puede utilizar para restaurar el controlador predeterminado últimamente cuando haya terminado con el comportamiento personalizado.

Cuestiones relacionadas