select 但无需等待 (POSIX)
select but without wait (POSIX)
我有文件 io 的典型设置,它适用于 select,例如:
int retval = select(maxfd +1 , &read_set, &write_set, &error_set, 0); // timeout==0 -> endless
但现在我有一种情况,我想循环并检查每个周期是否有一个文件 select 准备就绪。我不想为此启动一个单独的线程! posix/linux 中是否有可以使用的东西,希望使用相同的 FD_SET 数据结构来检查文件状态而不等待它们?
是的,我可以将 select
的超时设置为最小值,但我希望没有那个也能完成。
POSIX 说:
To effect a poll, the timeout parameter should not be a null pointer, and should point to a zero-valued timespec
structure.
因此对于您的应用程序,这样调用 select
就足够了:
struct timeval zero = { 0, 0 };
int retval = select(maxfd +1 , &read_set, &write_set, &error_set, &zero);
我有文件 io 的典型设置,它适用于 select,例如:
int retval = select(maxfd +1 , &read_set, &write_set, &error_set, 0); // timeout==0 -> endless
但现在我有一种情况,我想循环并检查每个周期是否有一个文件 select 准备就绪。我不想为此启动一个单独的线程! posix/linux 中是否有可以使用的东西,希望使用相同的 FD_SET 数据结构来检查文件状态而不等待它们?
是的,我可以将 select
的超时设置为最小值,但我希望没有那个也能完成。
POSIX 说:
To effect a poll, the timeout parameter should not be a null pointer, and should point to a zero-valued
timespec
structure.
因此对于您的应用程序,这样调用 select
就足够了:
struct timeval zero = { 0, 0 };
int retval = select(maxfd +1 , &read_set, &write_set, &error_set, &zero);