我有一個問題,當我在bashscript文件中運行該程序時,select()不會超時。這是我的實現:直接運行該程序後select()在bash腳本中沒有給出超時
#include <sys/select.h>
bool checkKeyPressed()
{
struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;
fd_set descriptor;
const int input = 0;
FD_ZERO(&descriptor);
FD_SET(input, &descriptor);
return select(1, &descriptor, NULL, NULL, &tv) > 0;
}
// strace的結果(正確的,是有超時)
select(1, [0], NULL, NULL, {1, 0}) = 0 (Timeout)
// strace的結果來運行bash腳本文件中的應用程序(無超時)
select(1, [0], NULL, NULL, {1, 0}) = 1 (in [0], left {0, 999996})
read(0, "", 1) = 0
我怎樣才能改變得到它與bashscript下也運行工作的功能?
在此先感謝。
是的,這很清楚。我的問題是,當我將程序包裝到bashscript中時,如何更改代碼以獲取select(1,[0],NULL,NULL,{1,0})= 0(Timeout)。謝謝 – olidev 2013-02-12 09:56:58
@olidev看來你不行。你必須以其他方式解決這個問題。 – 2013-02-12 10:31:31
select()的任何替代方法?謝謝 – olidev 2013-02-12 10:40:16