我有一个问题,当我在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