2012-01-27 77 views
0

我想只是爲了實現該算法通過C對Ubuntu的:等待輸入只需1秒,否則繼續

等待一定的時間,從鍵盤接收輸入,因此,通過獲取可能的輸入或隨着時間的推移,該計劃應該繼續。

我沒有任何線索,要做到這一點! 先進的謝謝。

+0

http://stackoverflow.com/questions/1513734/problem-with-kbhitand-getch-for-linux – 2012-01-27 23:12:38

+0

還請參閱http: //stackoverflow.com/questions/6839508/test-if-stdin-has-input-for-c-windows-and-or-linux/6839581#6839581 – Antti 2012-01-27 23:25:27

回答

0

參見用於alarm()signal()功能的手冊。您可以輕鬆超時任何代碼,而無需使用任何線程或進程。

+0

首先感謝您的回覆。我認爲,在這兩種解決方案中,程序運行都會進入等待狀態。但是,我的程序有一個圖形,每刷新一次,應該刷新一次,通過刷新,用戶可以輸入一個鍵,所以現在屏幕應該刷新,以顯示用戶的影響。所有的 – miryani 2012-01-28 05:07:33

0

常見的方式做到這一點是select()poll()

struct pollfd fd = {STDIN_FILENO, POLLIN}; 
switch(poll(&fd, 1, 1)){ 
case -1: 
    die("poll failed"); 
    break; 
case 0: 
    //timed out... 
    break; 
default: 
    //read from stdin 
}  
+0

首先謝謝你的回覆。 我認爲,在這兩個方案,方案的運行進入等待狀態。但是,我的程序有一個圖形,每刷新一次,應該刷新一次,通過刷新,用戶可以輸入一個鍵,所以現在屏幕應該刷新,以顯示用戶的影響。 – miryani 2012-01-28 05:07:10

+0

所以看'O_NONBLOCK' – Dave 2012-01-28 14:39:58