2012-05-18 76 views
2

正如標題所述。我有gets(buffer)while(1)無限循環,它停在gets(buffer)並等待無限。我想請gets(buffer)等待只能說從STDIN輸入3秒,並且比沒有字符串在緩衝區中時再重新控制,等等。
C是語言
在此先感謝!如何讓gets()只等待特定的時間從C輸入STDIN?

+2

你不應該使用'gets'而是'fgets',因爲'gets'是不安全的。如果你的緩衝區太小,你會得到緩衝區溢出。 – Gandaro

+2

千萬不要使用'gets'。 **絕不**使用'gets'。 –

+0

由於它不能說得夠多,所以**從來沒有一次**使用'gets'。 ** ** EVER! – Dave

回答

3

標準gets()函數沒有超時功能。規範 在C中執行I/O操作中的超時的方式是select() function

+0

有沒有一種方法來實現選擇()與STDIN作爲套接字?並設置超時 - tv_sec - 在select()一段時間,做我想做的事情? – azrahel

+0

@azrahel看'STDIN_FILENO' – Dave