2011-03-16 28 views
5

Necesito agregar una función de tiempo de espera para getchar() en mi programa.Agregar un tiempo de espera para getchar()

¿Qué hago para que cuando mi programa llegue a la instrucción getchar(), solo espere una cierta cantidad de tiempo para que el usuario realice una pulsación de tecla y el usuario no haga una pulsación dentro del tiempo determinado límite, el programa "omitirá" el getchar()?

El sistema operativo no es compatible con la biblioteca conio.h, por lo que kbhit no es una opción.

Respuesta

5

Esto generalmente se logra usando select() en stdin. Otra solución sería usar alarm() y un controlador simulado SIGALRM para interrumpir la llamada getchar() (aunque solo funciona en sistemas POSIX).

+0

Creo que alarm() debería hacer el truco. El problema es ... No sé cómo usar alarm()! ¿Podría publicar algún tipo de ejemplo de uso de alarma() con getchar()? No puedo sacar nada de Google. – brain56

+1

Simplemente llame a 'alarm (duration);' antes de su llamada 'getchar()'. Además, instale un signdler ficticio usando 'signal (SIGALRM, your_handler_func);' para que la señal de alarma no mate su programa. – ThiefMaster

Cuestiones relacionadas