Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/10/2007, 09:23
thepunishercadiz
 
Fecha de Ingreso: octubre-2007
Mensajes: 7
Antigüedad: 17 años, 2 meses
Puntos: 0
Gestión de señales

Buenas tardes.

A ver si alguien puede echarme una mano con esto:

Resulta que debo enviar señales desde el teclado para hacer cosas con un fichero:

1. Si el fichero no existe, lo creo vacío.

2. Si el fichero existe, se bloquea el programa y espera una señal desde el teclado
con kill, si se recibe SIGUSR1 sobreescribe el fichero, y si recibe SIGUSR2 no hace nada.

Los manejadores para hacer cada cosa según la señal los tengo hechos, pero cómo puedo mandar una señal desde el teclado sin usar el scanf????

Muchas gracias de antemano por vuestra ayuda.

int main() {

int result, vacio;
char c[180];
char sig[80];

if ((result=open("resultado.dat",O_RDONLY)) < 0) {
/* Puede ser que el fichero no exista, en ese caso lo creo vacío*/
sprintf(c,"El fichero no existe, voy a crearlo vacío\n");
write(2,c,strlen(c));
vacio = open("resultado.dat",O_WRONLY|O_CREAT,0600);
close(vacio);
}

else { /*El fichero existe*/
sprintf(c,"Fichero existente. Escribir kill -12 para acabar, kill -10 para seguir\n");
write(2,c,strlen(c));

scanf("%s",sig); DE AQUÍ EN ADELANTE ES DONDE TENGO EL PROBLEMA

if(strcmp(sig,"kill -12")){
/*sigusr2 no debo hacer nada*/
close(result);
signal(SIGUSR2,quehagosigusr2); /*sigusr2 no debo hacer nada*/
}
if(strcmp(sig,"kill -10")){
/*sigusr1 tengo sobreescribir fichero*/
close(result);
signal(SIGUSR1,quehagosigusr1); /*sigusr1 tengo sobreescribir fichero*/
}

}



}