2011-03-16 32 views
5

我需要在我的程序中爲getchar()添加超時函數。添加超時getchar()

我該怎麼做,以便當我的程序到達指令getchar()時,它只會等待一定的時間讓用戶進行按鍵操作,並且如果用戶在給定的時間內沒有進行按鍵操作限制,程序將「跳過」getchar()?

操作系統不支持conio.h庫,因此kbhit不是一個選項。

回答

5

這通常通過在stdin上使用select()來實現。另一種解決方案是使用alarm()和一個僞SIGALRM處理程序來中斷getchar()調用(儘管只在POSIX系統上工作)。

+0

我認爲鬧鐘()應該做的伎倆。問題是......我不知道如何使用alarm()! 你能發表一些使用getchar()使用alarm()的例子嗎?我無法從Google獲取任何內容。 – brain56 2011-03-17 15:16:32

+1

您只需在'getchar()'調用之前調用'alarm(duration)'。另外,使用'signal(SIGALRM,your_handler_func)'來安裝一個僞sighandler;'所以報警信號不會殺死你的程序。 – ThiefMaster 2011-03-17 15:25:00