|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Linux Select
( q$ i# V. k/ e+ }& _+ Y! ]2 ]. @. \' W: l5 A ^
6 q+ c; s% f& D4 t3 J7 s& `0 z
在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核:3 n+ j/ q- }6 l" ? v' w+ |9 R
! ^) Y- H' B. ]! h
( e: B* F4 v* l) ?7 ~! f* q A0 r2 L
•我们所关心的文件描述符* d8 ]# Q' G9 R6 `/ V& _( ^
•对每个描述符,我们所关心的状态。(我们是要想从一个文件描述符中读或者写,还是关注一个描述符中是否出现异常)
! }& u1 l6 x4 J1 O6 b •我们要等待多长时间。(我们可以等待无限长的时间,等待固定的一段时间,或者根本就不等待)+ w( R( |' Q& R" u" Y. z
从 select函数返回后,内核告诉我们一下信息:
. V* O& d3 m% @4 j4 C! f •对我们的要求已经做好准备的描述符的个数
: B: a; V! Y( T0 m' w/ C6 q) ` •对于三种条件哪些描述符已经做好准备.(读,写,异常)
8 s* M" l6 d2 A$ w4 V
/ G% Y0 I6 Z Z9 ~
) s* u G' W- w- f3 Fselect o% l' M' L% F) c8 D7 [3 [
) f, W! H. V0 A$ o c. Z, _5 g# G s' G( a
- A$ q, g) l) {/ ?. t$ Z' W
2 ?6 f6 E0 q5 e4 s
7 y3 {: w1 R! b A0 i; C; U& ^+ X6 R1 O- n! o
: [' n" Z7 U' @# A( K+ |9 [
. k f0 B' \) |3 B
( z$ J1 K) O+ h6 H0 B9 y* r1 ]
, a8 Z( l1 J/ ?+ |
1 Y# {- r3 y7 G! V8 ?1 d" W( k d7 T" m% Z6 L
0 N$ I3 D% x1 u- ?' B |
|