2011-03-16 15 views
5

Programımda getchar() için bir zaman aşımı işlevi eklemem gerekiyor.getchar() için bir zamanaşımı ekle

Programım getchar() komutuna ulaştığında, kullanıcının tuş vuruşu yapması için belirli bir süre beklemesi ve kullanıcının belirtilen süre içinde bir tuş vuruşu yapmaması için ne yapacağım? limit, program getchar() "atlayacak"?

İşletim sistemi conio.h kütüphanesini desteklemez, böylece kbhit bir seçenek değildir.

cevap

5

Bu genellikle stdin numaralı telefondan select() kullanılarak elde edilir. Başka bir çözüm alarm() ve getchar() aramayı durdurmak için bir kukla SIGALRM işleyicisi kullanıyordu (yalnızca POSIX sistemlerinde çalışıyor).

+0

Sanırım alarm() hile yapmalı. Sorun şu ki ... Alarmı nasıl kullanacağımı bilmiyorum()! Alarm() özelliğini getchar() ile kullanmaya dair bir örnek verebilir misiniz? Google’dan bir şey alamıyorum. – brain56

+1

'getchar()' çağrısından önce '' alarmı (süresi); Ayrıca, sinyal (SIGALRM, your_handler_func) kullanarak bir dummy sighandler takın; böylece alarm sinyali programınızı öldürmez. – ThiefMaster

İlgili konular