选择,但没有等待(POSIX)

时间:2017-11-29 18:48:04

标签: select posix

我有文件io的典型设置,适用于选择:

int retval = select(maxfd +1 , &read_set, &write_set, &error_set, 0);   // timeout==0 -> endless

但是现在我有一种情况,我希望循环并检查每个循环,如果其中一个文件选择器准备就绪。我不想为此开始一个单独的线程!是否可以使用posix / linux中的某些东西,希望使用相同的FD_SET数据结构来检查文件状态而不等待它们?

是的,我可以将select的超时设置为最小值,但我希望没有它可以完成。

1 个答案:

答案 0 :(得分:1)

POSIX说:

  

要实现轮询,timeout参数不应该是空指针,而应指向零值timespec结构。

因此,对于您的应用程序,应该像这样调用select就足够了:

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