como hago para mandar el 2º argumento de la funcion signal con parametros?

santoº
11 de Diciembre del 2003
el problema es el siguiente:

cuando llamo a signal
signal (señal, punteroFuncion)

la funcion a la que llama cuando ocurre la señal tiene que ser un void funcion() sin agumentos por ke cuando quiero ponerle argumentos

ejemplo:

signal(SIGTERM,muerteHijo(descriptor ,&lista));

cuando lo trato de compilar me pone lo siguiente:

uso inválido de la expresión void

yo NECESITO mandarle las variables por ke dependiendo de ke tipo sea el hijo tiene ke realizar distintas salidas, por ende necesito que si alguien sabe me conteste como hacer que esto funcione

gracias

Santoº

chuidiang
11 de Diciembre del 2003
No puedes pasarle un parametro a esa funcion.
En C de linux, tu funcion debe ser del tipo
void muerteHijo (int numeroSenhal)

es decir, devuelve void y recibe como entero el numero de señal que ha provocado que se le llame.

Luego a sigal lo llamas con

signal (SIGTERM, muerteHijo);

Cuando se produzca la señal SIGTERM se llamará a la funcion muerteHijo y se le pasará como parámetro el entero SIGTERM.

Si necesitas ver otros datos, no te queda más remedio que hacerlos globales o ponerlos en algún sitio que sea visible y que la función vaya a buscarlos.

Se bueno.

chuidiang
11 de Diciembre del 2003
Tienes un ejemplo de uso de signal para linux en www.geocities.com/chuidiang

Se bueno.