w*s 发帖数: 7227 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: wds (心开运就通,运通福就来), 信区: Programming
标 题: linux select(): can file descriptors be dynamtic ?
发信站: BBS 未名空间站 (Fri Nov 8 10:25:12 2013, 美东)
ok if i start with this, trying to read from 3 usb ports,
/* Initialize the input set */
FD_ZERO(&input);
FD_SET(usb_fd_0, &input);
FD_SET(usb_fd_1, &input);
FD_SET(usb_fd_2, &input);
max_fd = 4;
/* Initialize the timeout structure */
timeout.tv_sec = 10;
timeout.tv_usec = 0;
/* Do the select */
n = select(max_fd, &input, NULL, NULL, &timeout);
Now i unplug usb cable so usb_fd_2 is actually gone.
How to tell select to just listen on the 1st 2 ports ?
Regards ! | a9 发帖数: 21638 | 2 这个FD_SET貌似是需要在循环里每次重新设置一次的吧?
【在 w*s 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 【 以下文字转载自 Programming 讨论区 】 : 发信人: wds (心开运就通,运通福就来), 信区: Programming : 标 题: linux select(): can file descriptors be dynamtic ? : 发信站: BBS 未名空间站 (Fri Nov 8 10:25:12 2013, 美东) : ok if i start with this, trying to read from 3 usb ports, : /* Initialize the input set */ : FD_ZERO(&input); : FD_SET(usb_fd_0, &input); : FD_SET(usb_fd_1, &input); : FD_SET(usb_fd_2, &input);
| w*s 发帖数: 7227 | 3 wow, never knew that
【在 a9 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这个FD_SET貌似是需要在循环里每次重新设置一次的吧?
| S*A 发帖数: 7142 | 4 那个 input array 没有没有改就不需要从新设置。
你当然可以每轮 select 之前重新设不同的值。
【在 w*s 的大作中提到】![](/moin_static193/solenoid/img/up.png) : wow, never knew that
| a9 发帖数: 21638 | 5 去看一下programming版thrust的回复。
我记得不重设是不行的。可能FD_ISSET会得到不可预期的结果。
【在 S*A 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 那个 input array 没有没有改就不需要从新设置。 : 你当然可以每轮 select 之前重新设不同的值。
| S*A 发帖数: 7142 | 6 哦对,在这里,
On exit, the sets are modified in place to indicate which file descriptors
actually changed status.
关键是 select 返回后 set 被用来原地返回结果了。那是要重新填。
我糊涂了。
【在 a9 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 去看一下programming版thrust的回复。 : 我记得不重设是不行的。可能FD_ISSET会得到不可预期的结果。
|
|