Select 选择但不等待(POSIX)

Select 选择但不等待(POSIX),select,posix,Select,Posix,我有文件io的典型设置,它与select like配合良好: int retval = select(maxfd +1 , &read_set, &write_set, &error_set, 0); // timeout==0 -> endless 但是现在我遇到了一个情况,我想在每个循环中循环检查一个文件选择器是否准备好了。我不想开始一个单独的线程!posix/linux中是否有可以使用的东西,希望使用相同的类似FD_集的数据结构来检查文件状态,而不必等待

我有文件io的典型设置,它与select like配合良好:

int retval = select(maxfd +1 , &read_set, &write_set, &error_set, 0);   // timeout==0 -> endless
但是现在我遇到了一个情况,我想在每个循环中循环检查一个文件选择器是否准备好了。我不想开始一个单独的线程!posix/linux中是否有可以使用的东西,希望使用相同的类似FD_集的数据结构来检查文件状态,而不必等待它们

是的,我可以将
select
的超时设置为最小值,但我希望在没有这个设置的情况下可以完成。

POSIX说:

要进行轮询,超时参数不应为空指针,且应指向零值的
timespec
结构

因此,对于您的应用程序,按如下方式调用
select
就足够了:

struct timeval zero = { 0, 0 };
int retval = select(maxfd +1 , &read_set, &write_set, &error_set, &zero);